使用 Apache Proxy 統整多個 Port 服務

現在可以執行的 Daemon 太多了, PHP、Python、Ruby、Node.js、Go... 等等, 都會想要拿來跑 Web service,但是 80 Port 只有一個,所以前面只好擋一層 Apache 來達成。

於是使用 Apache 的 Proxy 功能來將後面各種服務的 Port 接上。

使用 Apache Proxy 統整多個 Port 服務

下述主要是幾個步驟:

  1. 開啟 Apache proxy module
  2. 設定 VirtualHost, 指定後端對應的 Port.

執行步驟如下:

  1. sudo a2enmod proxy proxy_http
  2. vim /etc/apache2/sites-enabled/xxx.conf
    <VirtualHost *:80>
    ServerName HOSTNAME
    ProxyRequests Off # 避免被當 proxy 跳板
    ProxyPass / http://localhost:8000/
    #ProxyPass /mail  http://mal.HOSTNAME/
    #ProxyPass /jsp   http://localhost:8080/
    AddDefaultCharset utf-8
    </VirtualHost>
    

把 對外的IP(X-Forwarded-For) 直接轉進來

  1. apt-get install rpaf # libapache2-mod-rpaf - module for Apache2 which takes the last IP from the 'X-Forwarded-For' header
    <IfModule rpaf_module>
    RPAFenable On
    RPAFsethostname On
    #RPAFproxy_ips 要加入自己的 IP
    RPAFproxy_ips 127.0.0.1 123.123.123.123
    RPAFheader X-Forwarded-For
    </IfModule>
  2. sudo service restart apache2

相關網頁

關於「Tsung」

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
分類: My_Note-Unix,標籤: , , , 。這篇內容的永久連結

在〈使用 Apache Proxy 統整多個 Port 服務〉中有 3 則留言

  1. 張旭表示:

    不知道 Nginx 跟 HAProxy 做一樣的事情是否有優劣處。

  2. 張旭表示:

    嗯嗯 HAProxy 好像比較底層。

    搭配 Docker 的用法:
    http://jasonwilder.com/blog/2014/07/15/docker-service-discovery/

發表迴響

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