
我需要設定反向代理,它將原始請求中的標頭值作為參數傳遞給目標 URL。原因純粹是特定於應用程式的,不幸的是我無法更改此應用程式。例如我需要以下https://a.com使用 http header myparam=abcd 我需要被代理http://b.com/?val=abcd
是否可以設定 IIS 或 Apache 來執行此類任務?如果是這樣,你能解釋一下怎麼做嗎?
答案1
在 Apache 2.4 中測試:
# (In a VirtualHost for a.com)
RewriteEngine on
RewriteRule ^(.*)$ http://b.com$1?val=%{HTTP:myparam} [QSA,P]
重寫範例(如果標頭myparam
具有 value myvalue
):
a.com
變成http://b.com?val=myvalue
a.com/path/here
變成http://b.com/path/here?val=myvalue
a.com/path?a=b&c=d
變成http://b.com/path?a=b&c=d&val=myvalue
如果myparam
標頭不存在,a.com/x
將重定向到http://b.com/x?val=
.如果您想重定向到http://b.com/x
,您可以使用上面的以下較長版本:
RewriteEngine on
RewriteCond %{HTTP:myparam} .
RewriteRule ^(.*)$ http://example.com$1?val=%{HTTP:myparam} [QSA,L,P]
RewriteRule ^(.*)$ http://example.com$1 [P]
相關連結:
答案2
對於 IIS,您可以使用URL 重寫擴充:
IIS URL Rewrite 2.0 讓 Web 管理員能夠建立強大的規則來實現更易於使用者記住且易於搜尋引擎查找的 URL。透過使用規則範本、重寫映射、.NET 提供者以及整合到IIS 管理器中的其他功能,Web 管理員可以輕鬆設定規則來定義基於HTTP 標頭、HTTP 回應或請求標頭、IIS 伺服器變數甚至複雜的URL 重寫行為。此外,Web 管理員可以根據重寫規則中表達的邏輯執行重定向、發送自訂回應或停止 HTTP 請求。
適用於:IIS 7、IIS 7.5、IIS 8
可以在以下位置找到演練: 為 URL 重寫模組建立重寫規則。