介绍
介绍
最近一个需求,需要把一个网站放在一个二级目录下
在 nginx 里面通过 location 和 proxy_pass 来实现
教程
首先抛出一个大坑
关于这个问题,度娘一搜,满屏幕的都是复制出来的内容,有的甚至连注释都懒得对标代码的都还能排第一页,真是无语~~
最关键的是这个说明,在我这里不好用,我的版本是 1.12.2
这是千篇一律的教程里的方法,仅供参考,不保证能用,反正我的环境不行
location /module1/ { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-Ip $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://$src_module1/; }
只要 proxy_pass 的 URI 地址的域名后面有具体路径,哪怕就是一个 /,映射就全废了,永远只映射到 proxy_pass 指定的这个具体 URI 地址上
解决方案
通过正则表达式来将我们需要的部分带到 proxy_pass 里
location ~ ^/module1/(.*)$ { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-Ip $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://$src_module1/$1?$query_string; }
虽然不好看,但是真起作用~~