我有haproxy作爲我們的nodejs應用的前一層,我正在尋找一種重寫url的方法。例如,如果客戶轉到https://aaa.com/product/123,haproxy將重寫爲網址https://bbb.com/product/123。這在Haproxy中可以做到嗎?重要的是我們想要保留url參數(product/123),只需更改主機名稱在haproxy中重寫URL
0
A
回答
0
你說你想「重寫」,但這是一個經常被濫用的術語。你有什麼打算?
- 是否要重寫傳入的URL,然後使用HTTP重定向更改瀏覽器地址欄中的地址?
如果是這樣,在代理配置:
http-request redirect prefix https://example.org if { hdr(host) -i example.com }
這改變example.com
到example.org
並告訴瀏覽器再問。
測試:
curl -v https://example.com/foo/bar/1234?query=yes
...
< HTTP/1.1 302 Found
< Cache-Control: no-cache
< Content-length: 0
< Location: https://example.org/foo/bar/1234?query=yes
< Connection: close
這是最簡單的解決辦法,如果它適合你的需要,因爲最終的結果是,瀏覽器實際上是做了正確的請求本身,減少意外行爲的可能性。
- 還是你想改變
Host:
頭後端服務器看到的,但不能發送重定向消息,並且離開瀏覽器的地址欄中顯示爲它是什麼?
這改變example.com
到example.org
在後端服務器看到在從HAProxy的請求中的報頭Host:
。
http-request set-header Host example.org if { hdr(host) -i example.com }
這樣做到底是什麼目的,但它可能不會有理想的結果,特別是如果應用程序知道其他的不一致,如輸入Referer:
或Origin:
是不符合Host:
,或者如果它使用cookie做非便攜式的事情,在這種情況下,可能需要進一步的頭部重寫(可能在兩個方向)或應用程序更改。
相關問題
- 1. 在IIS中重寫URL並重寫URL
- 2. Haproxy在同一backen上多次重寫
- 3. 重定向URL使用HAProxy的
- 4. 在重寫URL
- 5. 在URL重寫
- 6. 在.htaccess中重寫URL?
- 7. 在Yii中重寫URL
- 8. 在asp中的URL重寫
- 9. 在nodejs中重寫url
- 10. 在IIS7中重寫URL
- 11. 在php中重寫url htaccess
- 12. 在ROR中的URL重寫
- 13. 在web.config中重寫URL c#
- 14. 在IIS中的URL重寫
- 15. 在ASP.NET中重寫URL?
- 16. 在php中的url重寫
- 17. 在asp.net 2.0中重寫URL
- 18. 在Struts1中的URL重寫
- 19. 在IIS7中重寫url
- 20. 在asp.net中重寫url
- 21. 在IIS7中重寫URL
- 22. 在nginX中重寫URL
- 23. 在PHP中重寫url
- 24. 在jsf中重寫URL
- 25. 在.htaccess中重寫URL
- 26. 在.htaccess中重寫url
- 27. 在PHP中的URL重寫
- 28. url重寫在web.config
- 29. 重寫URL在.htaccess
- 30. URL重寫在ASP.Net
我想重寫傳入的URL,然後用HTTP重定向在瀏覽器的地址欄中更改地址。我嘗試了你的建議,但沒有奏效。我只想'/ product'做重定向,所以如果客戶請求/購物車,它不會做重定向。我嘗試了下面的內容,但是如果{hdr(host)-i bbb.com/product}'不支持'http-request重定向前綴https://%[req.hdr(Host)]/product。你知道我做錯了什麼嗎? –
'http-request重定向前綴https://example.org if {hdr(主機)-i example.com} {path_beg/product}'還請注意,'{''}'必須在它們之間至少有一個空格和任何相鄰的字符。不要在這裏使用'%[req.hdr(Host)]' - 這沒有意義,它是一個路由循環。 –