听雨

nginx下使用alias创建虚拟目录无效的解决方法

nginx下虚拟目录的创建方法如下:(在站点对应的conf文件中添加)

location /public/ {
    alias /home/wwwroot/public/;
 }

添加好以后重启nginx服务后发现不生效,这里可能是由于在此配置文件中设置了:location ~ \.(js|css|png|jpg|gif|ico|html)$这个配置块,而导致配置的虚拟目录无效。

这是因为location ~ \.(js|css|png|jpg|gif|ico|html)$这个配置块的优先级要高于我们设置的location /public/ {****}区块(这和书写顺序无关,正则模式的匹配优先级本来就要高于前缀模式)。而一个请求一个时间只能和一个location 配置块相关联(除非通过内部跳转方式强制重新匹配 location 块)。

解决的办法是修正你的那个正则 location,避免歧义。比如,当你去除那个 location ~
\.(js|css|png|jpg|gif|ico|html)$ 之后,你的 location /public/ 就可以顺利匹配。

评论