有没有办法将nginx用作路由器,同时在URL中保留所请求的域?例如,如果我点击mysite.com,nginx路由服务器会查看URL并将流量定向到特定服务器,同时在URL中维护原始请求的域。
E.g。
mysite.com/site1/params
Router -> site1.mysite.com/params
但即使正在调用幕后site1.mysite.com/params
,用户也会在网址中看到mysite.com/site1/params
。
我已经对配置进行了尝试,但似乎已经获得了404。
upstream site1 {
server site1.mysite.com;
}
location /site1 {
rewrite ^(.*)$ /$1 break;
proxy_pass http://site1;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
答案 0 :(得分:1)
使用带斜杠的位置,删除重写并使用proxy_pass
uri /
。 Nginx会将/site1/
替换为/
。此外,您可能需要将Host
标题设置为site1.mysite.com
而不是$host
。
location /site1/ {
proxy_pass http://site1/;
proxy_set_header Host site1.mysite.com;
...
}