使用nginx路由到不同的服务器
有没有办法将nginx用作路由器,同时将请求的域保留在URL中?例如,如果我点击mysite.com,nginx路由服务器会查看URL并将流量定向到特定服务器,同时在URL中保留原始请求的域 例如 但是,即使在幕后调用了使用nginx路由到不同的服务器,nginx,Nginx,有没有办法将nginx用作路由器,同时将请求的域保留在URL中?例如,如果我点击mysite.com,nginx路由服务器会查看URL并将流量定向到特定服务器,同时在URL中保留原始请求的域 例如 但是,即使在幕后调用了site1.mysite.com/params,用户仍会在URL中看到mysite.com/site1/params 我尝试了一下配置,但似乎得到了404 upstream site1 { server site1.mysite.com; } location /site1
site1.mysite.com/params
,用户仍会在URL中看到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;
}
使用带有尾随斜杠的位置,删除重写,并使用带有uri的
/
代理传递。Nginx将采用/
替换/site1/
。此外,您可能需要将Host
标题设置为site1.mysite.com
而不是$Host
location /site1/ {
proxy_pass http://site1/;
proxy_set_header Host site1.mysite.com;
...
}
这似乎将我重定向到mysite.com:random port除了我的上一条评论外,如果我手动将端口80键入初始URL,它会起作用,有什么办法可以解决吗?你应该将端口放到上游定义
服务器site1.mysite.com:80代码>是的,当我尝试这样做时,同样的问题:/。也许它是缓存的。端口80是默认值。尝试清除浏览器缓存
location /site1/ {
proxy_pass http://site1/;
proxy_set_header Host site1.mysite.com;
...
}