由於網路架構的問題,我們有時會設計讓不同網段必須透過 Proxy 才能存取 Subversion Repository,但是為此架設一個獨立的 Proxy Server (如 squid)實在太麻煩,利用 Apache 內建的 mod_proxy / mod_proxy_http 功能有時候會讓工作簡化很多
ProxyRequests Off <Proxy *> Order deny,allow Deny from all </Proxy> ProxyVia On |
為了安全性考量,如同上面的設定,我們先把所有 Proxy 的存取關掉,然後依據需要開放特定目錄來允許 Proxy
例如我們想把對 /svn 的存取導向到 http://svn.domain/svn,那麼設定內容就會變成:
<VirtualHost *:80> ProxyPass /svn http://svn.domain/svn ProxyPassReverse /svn http://svn.domain/svn <Location /svn> <Limit OPTIONS PROPFIND GET REPORT MKACTIVITY PROPPATCH PUT CHECKOUT MKCOL MOVE COPY DELETE LOCK UNLOCK MERGE> Order Deny,Allow Allow from all Satisfy Any </Limit> </Location> </VirtualHost> |
裡面最重要的就是 <Limit OPTIONS PROPFIND… > 這一行(這一整行不能分成兩行,Copy-Paste時請注意),因為 Subversion 會用到除了 HTTP GET / POST 以外的一些特殊 Method,因此必須設定讓 HTTP 的 Proxy Module 允許這些 Methods 通過,才能讓 Subversion 正常運作
另外建議修改 Allow from all 這一行,改成僅允許特定 IP 來連結,也可強化系統的安全性
參考資料: Subversion behind an Apache Reverse Proxy (不過裡面的設定方式跟我上面提供的有一點點小小差異)
如果你還是想用 squid 來解決問題,那您可以參考 Subversion 網站上面的 FAQ
自動引用通知: 網站製作學習誌 » [Web] 連結分享