本文为大家介绍nginx中的alias以及alias目录中使用rewrite的方法,有需要的朋友可以参考下。
一 、一个跨目录的用法
location / {
root /XXX/A/;
index index.do index.jsp index.html index.htm;
proxy_pass http://XXX.XXX.XXX.XXX:8080;
}
location /other/ {
alias /XXXX/B/;
index index.html index.jsp;
proxy_pass http://XXX.XXX.XXX:8080;
}
nginx中的alias等于再定义一个location, 注意 other/ 后面的"/"千万不要省掉。
二、alias建好了,但后面做伪静态遇到点小问题,就是确认过rewrite规则无误,就是转发不成功。
例如:
location / {
root /XXX/A/;
index index.do index.jsp index.html index.htm;
proxy_pass http://XXX.XXX.XXX.XXX:8080;
}
location /other/ {
alias /XXXX/B/;
index index.html index.jsp;
rewrite ^/([0-9]+)$ /other/index.jsp?mapid=$1 last; rewrite ^/([0-9]+)/$ /other/index.jsp?mapid=$1 last;
proxy_pass http://XXX.XXX.XXX:8080;
}
为什么不成功呢? 打开日志检查发现访问 http://xxx.com/25 实际读取的是25,肯定是404了,我们需要让它取得的是 other/index.jsp?mapid=25, 原因在于我们的rewrite位置放置的不正确,应该放在 location / 里,放在下面,如果访问的是 http://xxx.com/other/25 才会有用,所以正确的应该为:
location / {
root /XXX/A/;
index index.do index.jsp index.html index.htm;
rewrite ^/([0-9]+)$ /other/index.jsp?mapid=$1 last; rewrite ^/([0-9]+)/$ /other/index.jsp?mapid=$1 last;
proxy_pass http://XXX.XXX.XXX.XXX:8080;
}
location /other/ {
alias /XXXX/B/;
index index.html index.jsp;
proxy_pass http://XXX.XXX.XXX:8080;
}