服务器重定向时如何配置Nginx

时间:2019-10-28 14:47:42

标签: 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-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

2 个答案:

答案 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;
  }