如何解决如何将Nginx位置重定向到其他规则?
我正在使用NGINX并尝试将所有具有子目录FusionChart
的请求转到特殊位置,我的意图是所有带有[ROOT_URL]/FusionChart/
的URL都应转到下面的# Rule 3
。
但是,我有一个现有的nginx规则,其中规定所有静态内容都应转到# Rule 2
。
Nginx配置:
server {
listen 80;
server_name domain2.com www.domain2.com;
access_log logs/domain2.access.log main;
# Rule 1
location ~ ^/(images|javascript|js|css|flash|media|static)/
{
root /var/www/virtual/big.server.com/htdocs;
expires 30d;
}
# Rule 2
location ~* \.(js|css|png|jpg|jpeg|gif|jqGrid|images|common|ico|map|woff|woff2|ttf|html)$ {
root /home/rcp/dev/public/others;
expires 10y;
}
# Rule 3
location ~ ^/(FusionCharts)/ {
root /home/rcp/dev/public/charts;
expires 10y;
}
location / {
proxy_pass http://127.0.0.1:8080;
}
}
经测试的URL:
http://domain2.com/FusionCharts/index.html
这将属于# Rule 2
,如何修改规则,使上述请求进入# Rule 3
?
解决方法
从头到尾检查正则表达式的匹配位置,第一个找到的匹配项用于请求处理。您可以交换第二和第三位置,也可以使用location ^~ { ... }
语法(有关详细信息,请检查documentation)
location ^~ /FusionCharts/ {
root /home/rcp/dev/public/charts/;
expires 10y;
}
请注意,对于index.html
请求,文件位于/FusionCharts/index.html
的上述位置,将在/home/rcp/dev/public/charts/FusionCharts
目录下搜索。如果这不是理想的行为,请使用alias /home/rcp/dev/public/charts/;
指令,而不要使用root
指令。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。