服务器重定向时如何配置nginx
我将我的Nginx配置为将/doc定位到我的一个本地服务器,如下所示:服务器重定向时如何配置nginx,nginx,Nginx,我将我的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-Pro
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
这就是问题所在……正确的URL应该是/doc/message/html
如何配置我的Nginx将/redirected\u by\u port\u 8000\u服务器的URL重定向到location/doc块中的/doc/redirected\u by\u port\u 8000\u服务器,您必须重写URI。在nginx中,您可以通过在
proxy\u pass
语句末尾添加/
来传递URI开头的/doc
。它看起来像下面。使得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/;
}
非常感谢@Richard Smith。 我使用了curl-I检查了重定向位置,并在下面更改了我的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;
}
看看指令。使用curl-I
确定需要匹配的位置
响应头的确切值。