如何使用Nginx反向代理两次?

问题描述 投票:0回答:1

我在nginx server_1上具有此配置:

upstream server_2 {
 server 127.0.0.1:8080;
}

server {
 listen 80;
 server_name *.mydomain.com;
 proxy_set_header X-Forwarded-Host $host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header X-Real-IP $remote_addr;

 location / {
   proxy_redirect off;
   proxy_pass http://server_2;
 }
}

并且此配置在nginx server_2上

proxy_set_header X-Forwarded-Host $host;
proxy_set_header Host $host;

server {
    listen 8080;
    server_name ~^subdomain\.mydomain\.com$;
    location / { proxy_pass http://127.0.0.1:2000; }
}

例如,现在重定向不起作用

如果/ url应该重定向到/ otherurl并且请求是http://subdomain.mydomain.com/url,则返回到浏览器的重定向URL是http://server_1/otherurl而不是http://subdomain.mydomain.com/otherurl

nginx reverse-proxy
1个回答
0
投票

找到了解决方案here

只需删除proxy_redirect off,然后将以下行添加到位置块中

proxy_set_header HOST $host;

它将成为

 location / {
   proxy_pass http://server_2;
   proxy_set_header HOST $host;
 }
© www.soinside.com 2019 - 2024. All rights reserved.