使用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