瀏覽標籤:

Windows Server

[IIS][GitLab] 利用 IIS Reverse Proxy 將 GitLab 加上 Https

最近工作上有個需求要將 GitLab 掛上 SSL 憑證,原本就有一台 Windows Server 在管理所有的 SSL 憑證,於是乎就想到可以利用 IIS Reverse Proxy 的方式將憑證集中管理在這台,這樣管理起來也比較方便。

前置作業

首先需要安裝兩個模組

  1. URL Rewrite
  2. Application Request Routing

安裝 URL Rewrite 的時候有踩到一個地雷,詳情請見 [IIS] Windows Server 2016 安裝 URL Rewrite 憑證失效

開始設定

  1. 建立一個新站台並設定好 SSL 憑證 (由於這邊我只是測試用,所以我自己簽一個自我憑證)

  2. 選擇 URL Rewrite

  3. 選擇 新增規則 -> 反向 Proxy

  4. 選擇 確定 啟用 Proxy

  5. 1 的地方輸入 GitLab 的位置,2 的位置輸入欲對外的 Domain

  6. 當我以為簡單就完成開啟網頁試試時卻噴錯誤給我看

HTTP 錯誤 500.52 - URL Rewrite Module Error.
當 HTTP 回應的內容經過編碼 ("gzip") 時,無法套用輸出重寫規則。


原因是因為 GitLab 有開啟壓縮,但使用了反向 Proxy 無法將已壓縮的檔案進行修改,所以就噴了這個錯誤

  1. 解決方法是在 伺服器變數 做調整

  2. 新增兩個變數分別是 HTTP_ACCEPT_ENCODINGHTTP_X_ORIGINAL_ACCEPT_ENCODING

  3. 編輯輸入規則

  4. 新增兩個伺服器變數,伺服器變數名稱選擇剛剛加入的 HTTP_X_ORIGINAL_ACCEPT_ENCODING,值輸入 {HTTP_ACCEPT_ENCODING}

  5. 我們已經將 HTTP_ACCEPT_ENCODING 放到 HTTP_X_ORIGINAL_ACCEPT_ENCODING 裡面,原本的值就可以清空清空,但因為 UI 不允許輸入空值,所以這邊我就隨便打個值

    如果跟我一樣很在意的話可以去站台底下的 web.config 清空剛剛的值

  6. 終於可以開起來囉 ~

顯示調整

雖然已經可以正常開啟網頁了,但網址還是會顯示錯誤

  1. 新增兩個伺服器變數 HTTP_X_FORWARDED_HOSTHTTP_X_FORWARDED_PROTO
  2. HTTP_X_FORWARDED_HOST 輸入 Domain,HTTP_X_FORWARDED_PROTO 輸入 https
  3. 修改 /etc/gitlab/gitlab.rb 加上這段
external_url 'https://gitlab.exfast.me'
nginx['listen_port'] = 80
nginx['listen_https'] = false

 

這樣頁面顯示的網址就正常囉,不過 https://gitlab.exfast.me/profile/active_sessions 這邊顯示的 IP會是 IIS 那台的位址,所以還必須調整 /etc/gitlab/gitlab.rb 加上這段

# Each address is added to the the NGINX config as 'set_real_ip_from <address>;'
nginx['real_ip_trusted_addresses'] = [ '127.0.0.1', '192.168.56.106' ]
# other real_ip config options
nginx['real_ip_header'] = 'X-Forwarded-For'
nginx['real_ip_recursive'] = 'on'

 

參考資料

  1. How to Configure IIS as a Reverse Proxy for Sonatype Products
  2. IIS with URL Rewrite as a reverse proxy – part 2 – dealing with 500.52 status codes
  3. 如何讓在 Reverse Proxy 之後的網站正常運行 (URL Rewrite)
  4. 如何利用 IIS7 的 ARR 模組實做 Reverse Proxy 機制
  5. Configuring GitLab trusted_proxies and the NGINX real_ip module
       

[IIS] Windows Server 2016 安裝 URL Rewrite 憑證失效

2016 年的時候我筆記過一篇 [IIS] Windows Server 2016 無法安裝 URL Rewrite !?
想不到現在 2018 年了再次安裝 URL Rewrite 時又遇到新問題,微軟爸爸不要亂放地雷好嗎?

我是從 這邊 下載的 這個版本 安裝時會出現下面這張圖的狀況

經過千辛萬苦的餵狗後發現是微軟在 2018/09/12 發布的版本帶了時間戳,而這個時間戳卻造成無法安裝的問題,這邊我有找到一個舊版本給大家急救一下 點我下載 (密碼:https://blog.exfast.me/)

參考資料:
URL rewrite installation failing due to signature verification failure

       

[IIS] 在 Windows Server 上執行 PHP 莫名的慢

原本在Linux非常順暢的Wordpress移植到了Windows Server上卻發生一個頁面要Loading一秒以上,餵狗了一下找了幾種方法來優化一下。

  1. 修改php.ini
    output_buffering修改為Off

    output_buffering = Off
  2. 將php內用到localhost的通通修改為127.0.0.1
  3. 關閉Router的防DDOS功能 <-- 這個功能害我測了好久

修改完後有快一點點了,但還是比不上Linux的速度,可能這就是Windows Server先天上的吃資源吧。

 

 

來源:https://forums.iis.net/t/1153459.aspx?PHP+very+slow+on+IIS7