nginx中的alias以及alias目录中使用rewrite的方法

发布时间:2020-03-12编辑:脚本学堂
本文为大家介绍nginx中的alias以及alias目录中使用rewrite的方法,有需要的朋友可以参考下。

本文为大家介绍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;
}