使用nginx.conf
/ proxy-pass
等rewrite
功能,我可以将原始网址保留在浏览器的“位置”字段中吗?
我有几个PlayFramework应用程序在不同的端口(9001,9002,...)上运行,代理转发通过nginx.conf
设置。人们浏览它们:
http://domain.name/App1/
http://domain.name/App2/
我的nginx.conf
条目如下所示:
location /App1/ {
proxy_pass http://localhost:9001/;
rewrite ^/App1/(.*) http://domain.name:9001/$1;
}
如果我要求http://domain.name/App1/
,我在浏览器的位置字段中看到的是http://domain.name:9001
。我希望我看到的是http://domain.name/App1/
,也就是说,我希望名称 App1保留在URI中,我宁愿不公开端口号。
假设App1有一个链接/location/ABC
。当我点击它时,当我希望看到http://domain.name:9001/location/ABC
时,我会看到http://domain.name/App1/location/ABC
。
我可以使用nginx.conf
实现此目的吗?
P.S。我将http://domain.name
明确地放在重写规则中,因为没有它我在浏览器中得到localhost
,而我的浏览器的localhost与服务器的不同。
答案 0 :(得分:3)
重写浏览器的问题重定向。
如果您只想从上游安装多个位置 - 您不需要重写,只需使用:
location /App1/ {
proxy_pass http://localhost:9001/;
}
但应用应该使用相对链接或帐户来确定其绝对位置。
对于更复杂的网址操作,您可以使用break
- 重写:
location /App1/ {
rewrite ^/App1/(.*) /$1 break;
proxy_pass http://localhost:9001;
}