nginx 位置覆盖别名

nginx 位置覆盖别名

我有一个别名“/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 在该级别仅匹配一个locationserver,因此在这种情况下您必须将它们嵌套。有关完整详细信息,请参阅官方文档: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/

相关内容