Access Subversion with Apache Proxy Module

由於網路架構的問題,我們有時會設計讓不同網段必須透過 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

在〈Access Subversion with Apache Proxy Module〉中有 1 則留言

  1. 自動引用通知: 網站製作學習誌 » [Web] 連結分享

歡迎留下您的意見