在 OS X Server 設定 reverse proxy

最近在 Mac mini 上安裝了 SCM-Manager 來做為 source code 的管理,可是因為 Mac mini 上已經有 web server 了,為了避開衝突,scm-server 就使用 port 8080,而在 web server 上再設定 reverse proxy 到 scm-server。

從 OS X 的管理介面並沒有可以設定 reverse proxy 的地方,不過在進階設定有個網路 App 的部份,看起來似乎是可以自訂一些特殊功能的地方。

看了 Apple 網站上關於 web application 的說明,竟然只是簡單帶過,要自己去看 man webappctl 以及 /Library/Server/Web/Config/apache2/webapps/ 目錄內的範例。

在看了範例後才發現要做 reverse proxy 意外的簡單,因為我的需求只要寫個 .plist 檔案就可以做到了,不需要其他的輔助檔案了。

我寫了 org.scm-manager.webapp.proxy.plist,內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<!-- See man pages for webapp.plist(5) and webappctl(8) for information about this example webapp.plist -->

<plist version="1.0">
<dict>
	<key>launchKeys</key>
	<array>     <!-- Launchd plists in /System/Library/LaunchDaemons are loaded when webapp is started -->
		<!-- <string>homebrew.mxcl.scm-manager</string> -->
	</array>
	<key>name</key>
	<string>org.scm-manager.webapp.proxy</string>
	<key>displayName</key>          <!-- Name shown in Server app -->
	<string>Proxy to SCM-Manager</string>
	<key>proxies</key>
	<dict>
		<key>/scm</key>
		<dict>
			<key>path</key>
			<string>/scm</string>
			<key>urls</key>
			<array>
				<string>http://127.0.0.1:8080/scm</string>
			</array>
		</dict>
	</dict>
	<key>requiredModuleNames</key>
	<array>
		<string>proxy_module</string>
	</array>
	<key>requiredWebAppNames</key>
	<array/>
	<key>sslPolicy</key>
	<integer>0</integer>
</dict>
</plist>

其中 <proxies> 的部份就是設定 reverse proxy 的部份,在這裡只是將 http://example.com/scm 轉到 http://localhost:8080/scm 而已。 將檔案放到 /Library/Server/Web/Config/apache2/webapps/ 目錄後,再執行

webappctl start org.scm-manager.webapp.proxy example.com

執行後可以看看 /Library/Server/Web/Config/apache2/site/ 內關於 example.com 的設定檔,已經加進了 reverse proxy 的設定才對。

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料