NGINX: Proxy folders to different root

原文: NGINX: Proxy folders to different root


这篇教程教你在 Nginx 中将站点的不同目录设置成不同的反向代理站点的根目录。

默认情况下,假设有一个设置了 proxy_passlocation 区块,这个 location 区块匹配的是一个目录,例如 /nagios ,访问这个目录将跳转到代理服务器:

1
2
3
4
5
6
7
8
location /nagios/ {
proxy_pass http://10.0.21.8:80/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect off;
}

当在浏览器中访问的时候,上面的配置会将你的请求发送到 http://10.0.21.8/nagios/ ,因为这就是 Nginx location 的默认行为。然而如果你想要浏览器转发请求到 http://10.0.21.8/ ,你要么 rewrite URL 要么就使用 / location。

下面是正确的重写规则的示例:

1
2
3
4
5
6
7
8
9
location /nagios/ {
rewrite ^/nagios(/.*)$ $1 break;
proxy_pass http://10.0.21.8:80/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect off;
}

可以这一行配置:

1
rewrite ^/collectd(/.*)$ $1 break;

它解决了问题, 将你的请求发送到 http://10.0.21.8/ 而不是 http://10.0.21.8/nagios.

本文标题:NGINX: Proxy folders to different root

文章作者:kinboy

发布时间:2018年10月17日 - 17:40:17

最后更新:2019年07月15日 - 18:05:10

原始链接:http://kinboyw.github.io/2018/10/17/NGINX-Proxy-folders-to-different-root/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

------ Passage Ending ------