我将Nginx配置为将/ doc定位到我的本地服务器之一,就像这样:
location /doc {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:8000;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
}
然后,我在8000端口上的服务器将重定向到 / message / html
这是问题所在...
正确的网址应为 / doc / message / html
我如何配置Nginx以将/ redirected_by_port_8000_server的URL重定向到位置/ doc块
中的/ doc / redirected_by_port_8000_server答案 0 :(得分:0)
您必须重写URI。在nginx中,您可以通过在/doc
语句的末尾添加/
在URI的开头传递proxy_pass
。如下图所示。这样http://whatever/doc
-> http://127.0.0.1:8000/doc
proxy_pass http://127.0.0.1:8000/;
但是,下一个代理应自行重写/doc
路径,并将其添加到其开头。在nginx中,它看起来像。
location /doc {
rewrite ^/(.*) /$1/message/html/ break;
proxy_pass http://127.0.0.1:8000/;
}
答案 1 :(得分:0)
非常感谢@Richard Smith。 我使用 curl-我检查了重定向位置,并在下面更改了我的Nginx配置文件:
location /doc {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:8000;
proxy_redirect https://$http_host https://$http_host/doc; #this will rewrite the redirect Location header
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
}