同步發表 Blog:[IIS][GitLab] Reverse Proxy 後的小問題
既上次 [IIS][GitLab] 利用 IIS Reverse Proxy 將 GitLab 加上 Https 將 gitlab 擺到 iis 後面之後,遇到部分功能無法正常使用的問題
.cs
、 .config
等檔案檔案庫 -> 比較
功能.cs
、 .config
等檔案檔案庫 -> 比較
功能會產生上面兩點的原因是 IIS 對靜態檔案有預設的保護機制,不會將不認識的副檔名暴露給外部連線下載,其中 .config
更是 ASP.NET 設定檔的副檔名,但這站台只是當作中繼站做轉發的動作而已,所以我判斷可以關閉所有安全機制。
web.config
configuration -> system.webServer -> staticContent
結點 (若無則新增)<mimeMap fileExtension=".*" mimeType="application/octet-stream" />
<mimeMap fileExtension="." mimeType="application/octet-stream" />
configuration -> system.webServer -> security
結點 (若無則新增)<requestFiltering>
<hiddenSegments>
<clear />
</hiddenSegments>
<denyUrlSequences>
<clear />
</denyUrlSequences>
<fileExtensions allowUnlisted="true">
<clear />
</fileExtensions>
</requestFiltering>
這個問題是因為 IIS 將網址重複 UrlEncode 兩次,讓藏在後面的 gitlab 無法正確辨識網址。
web.config
configuration -> system.webServer -> rewrite -> rules
結點useOriginalURLEncoding
屬性如下<rules useOriginalURLEncoding="false">
....
</rules>
rule -> action
結點並修改 url
屬性如下<action type="Rewrite" url="http://192.168.1.100{UNENCODED_URL}" />
參考資料: