我有一个别名“/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
我该如何解决?
答案1
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;
}
# ...
}
答案2
您是否设置了根目录?请发布更多配置信息。
还有一些必读内容:https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/