У меня есть псевдоним «/ temp», который работает нормально, но когда я добавляю еще один блок местоположения, псевдоним возвращает 404.
Рабочий конфиг: http://mysite.com/temp/blank.gif -> OK
server {
# ...
location /temp {
alias /var/www/temp;
}
# ...
}
Конфигурация ошибки: http://mysite.com/temp/blank.gif -> 404
server {
# ...
location /temp {
alias /var/www/temp;
}
location ~ \.(?:jpg|png|gif)$ {
expires 30d;
}
# ...
}
Вот моя полная конфигурация: http://pastebin.com/yExq0nMY
Как я могу это решить?
Используйте вложенный location
для этого.
nginx соответствует только одному location
блок на server
уровень, поэтому вы должны вложить их в этом случае. Подробности см. В официальной документации: Как nginx обрабатывает запрос.
server {
# ...
location /temp {
alias /var/www/temp;
location ~ /temp/\.(?:jpg|png|gif)$ {
expires 30d;
}
}
location ~ \.(?:jpg|png|gif)$ {
expires 30d;
}
# ...
}
У вас есть корневой каталог? Пожалуйста, опубликуйте больше конфигурации.
Еще несколько важных статей: https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/