原文: NGINX: Proxy folders to different root
这篇教程教你在 Nginx 中将站点的不同目录设置成不同的反向代理站点的根目录。
默认情况下,假设有一个设置了 proxy_pass
的 location
区块,这个 location
区块匹配的是一个目录,例如 /nagios
,访问这个目录将跳转到代理服务器:1
2
3
4
5
6
7
8location /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
9location /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
.