使用nginx.conf
功能如proxy-pass
/rewrite
,我可以在浏览器的位置字段中保留原始 URL吗?使用nginx代理/重写,我可以在浏览器的位置字段中保留原始URL吗?
我有几个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与服务器的不一样。
感谢。这实际上是我尝试的第一件事。但是,当我浏览到http://domain.name/App1/时,出现Action Not Found错误(对于请求'GET/App1 /'),因为Play应用程序不希望在URL中看到它自己的名称。 – gknauth
然后尝试'proxy_pass http:// localhost:9001 /'(注意斜杠) – Vasfed
谢谢。我尝试了上面的第二个完整示例,并且没有结尾的斜杠。我到了应用程序的主页,但是当我点击一个链接是/位置/ ABC,我得到了http://domain.name/location/ABC-> 404 Not Found。相对而言,你是指该链接应该是位置/ ABC?我不知道是否省略了前导斜线可以用于PlayFramework路由。 – gknauth