同福

【Nginx】二级目录映射到域名

介绍

介绍

最近一个需求,需要把一个网站放在一个二级目录下

在 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;
    }

虽然不好看,但是真起作用~~