Nginx: Как обслуживать разные URL с разными настройками из одного файла?
У меня есть тысячи текстовых файлов, названных как ABC, Я хотел бы получить доступ к этим файлам с другого URL:
- если это ABC или же ABC.txt Я хотел бы добавить default_type text/plain и подать этот файл - если это ABC.html Я хотел бы добавить default_type text/html и обслуживать этот файл (чтобы у меня было две разные версии одного и того же файла).
Возможно ли это сделать в nginx? Тот факт, что один URL может быть сопоставлен только с одним location директива вызывает у меня проблемы с поиском "чистого" пути.
2 ответа
nginx обрабатывает предложенный mimetype на основе URI. Я попробовал следующую комбинацию, и она работает:
root /usr/share/nginx/www;
default_type text/plain;
location = /abc.txt {
alias /usr/share/nginx/www/abc;
}
location /abc.html {
alias /usr/share/nginx/www/abc;
}
Вы должны попытаться создать отдельное местоположение для каждого расширения файла и использовать внутреннее перенаправление. Это будет что-то вроде этого:
location /ABC.txt {
add_header Content-Type text/plain;
rewrite /ABC last;
}
location /ABC.html {
add_header Content-Type text/html;
rewrite /ABC last;
}
location /ABC {
alias /var/www/ABC.txt
}
Я не обещаю, что это сработает, потому что я не проверял это на реальном nginx.