我正在嘗試使用IIS 7.5,0.3.0(ARR)和URL Rewrite 2.0爲Jenkins設置反向代理。包含百分號(%)的IIS反向代理重新編碼URL
我有代理主要工作,但我遇到的問題與包含百分號(%)的網址。
無論我嘗試什麼,代理都會堅持對重寫的URL中的百分號進行解碼或重新編碼。
這就是我想要的URL重寫:
http://my.proxy/a%2Fb -> http://my.host:8080/a%2Fb
這是網址如何實際上被改寫:
http://my.proxy/a%2Fb -> http://my.host:8080/a/b
- or -
http://my.proxy/a%2Fb -> http://my.host:8080/a%252Fb
我怎樣才能獲得IIS \ ARR \重寫停止重新編碼我重寫的URL?
事情我已經嘗試:
一個正常的反向代理(重寫URL作爲
http://my.host:8080/a/b
):<rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(.*)" ignoreCase="true" /> <action type="Rewrite" url="http://my.host:8080/{R:1}" /> </rule>
使用
UNENCODED_URL
服務器變量(重寫URL爲http://my.host:8080/a%252Fb
):<rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(.*)" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{UNENCODED_URL}" pattern="/(.*)" /> </conditions> <action type="Rewrite" url="http://my.host:8080/{C:1}" /> </rule>
就在直輸入URL(作爲測試 - 也重寫URL作爲
http://my.host:8080/a%252Fb
):在<rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(.*)" ignoreCase="false" /> <action type="Rewrite" url="http://my.host:8080/a%2Fb" /> </rule>
所有的想法斯科特Hanselman的優秀 「Experiments in Wackiness: Allowing percents, angle-brackets, and other naughty things in the ASP.NET/IIS Request URL」
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="*,:,&,\" relaxedUrlToFileSystemMapping="true" />
<security> <requestFiltering allowDoubleEscaping="true" /> </security>'
注:我就遇到了這個問題,當我的IIS反向代理相抵觸的Jenkins' built-in reverse proxy checking system它試圖做一個HTTP重定向到這種形式的URL跑去。
你有沒有想出解決辦法?我現在有同樣的問題... – Korijn
不幸的是,沒有。出於這個原因,我已經不再考慮將IIS作爲可接受的反向代理平臺。 –
你用什麼來代替? – Martin