[Apache] 設定反向代理ProxyPass與ProxyPassReverse之筆記

摘要:[Apache] 設定反向代理ProxyPass與ProxyPassReverse之筆記

情況

  1. 一台Windows的電腦,有自己的對外IP
  2. 一台Android的手機,執行IP摄像头來達成IP CAM
  3. 一個無線網路環境,上面2個裝置都可以連線進去,並得到192.168.*.*之IP

目標

想要從外部網路看到IP CAM的畫面

限制

因為缺乏資金,所以無法透過AP的NAT(Virtual Server)來解決

解決方案

上網搜尋後,找到Apache中有mod_proxy這個東西可以解決我的問題,在一番設定與除錯後,終於達成我的目的,詳細步驟如下:

  1. httpd-ajp.conf中設定ProxyPassProxyPassReverse (我是安裝XAMPP,如果沒有這個檔案的話,可以把這兩行加在任一設定檔裡面,例如: httpd.conf)
    ProxyPass /cam http://192.168.0.100:8080/
    ProxyPassReverse /cam http://192.168.0.100:8080/

     

  2. 重開Apache
  3. 瀏覽http://localhost/cam/
  4. 出現Server error! Error 500
  5. 打開error.log來看,發現
    AH01144: No protocol handler was valid for the URL /cam. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
    

     

  6. 上網搜尋後,發現要在httpd.conf中,將下面這行取消註解
    LoadModule proxy_http_module modules/mod_proxy_http.so

     

  7. 再次瀏覽http://localhost/cam/,成功

後記

發現有更快更方便的做法

  1. httpd.conf中的Listen 80後面加上Listen 8081
  2. httpd-vhosts.confhttpd-xampp.conf中新增
    <VirtualHost *:8081>
    	ProxyPass / http://192.168.0.100:8080/
    	ProxyPassReverse / http://192.168.0.100:8080/
    </VirtualHost>

     

文章內容僅提供技術分享,如有錯誤還請不吝指教。