apache 配置反向代理服務器

前幾天實驗了下 nginx 配置反向代理服務器。雖然 nginx 的安裝很麻煩,可是用起來卻是很簡單。不過組裏沒人用過 nginx,apache 服務器你們卻是蠻熟,爲了減小 ops team 的工做量,我決定使用 apache。node

我記得本科時安裝過 apache 服務器,當初沒有遇到困難。而此次安裝卻總也安裝不成功,公司對機器的權限管理的很嚴格,我沒有 root 權限,沒有鏈接外網權限,編譯 apache 時有不少依賴拿不到,最後仍是請 ops team 的人幫忙搞定的。nginx

配置 proxy module。apache 服務器的 proxy module 是安裝可選的,編譯時沒有加入反向代理 module,但在編譯完成後,依然能夠經過修改配置動態加載。配置在 conf/httpd.conf 中,把反向代理相關的 module uncomment 就好。這裏須要注意,若是 module 之間存在依賴關係,apache 不會自動 resolve 依賴,反之,它會在 error.log 中告訴咱們缺乏哪一個模塊。web

至於反向代理的配置,也在 httpd.conf 中,配置的寫法和 nginx 很是相似,對於個人需求,只要在 httpd.conf 中添加apache

Listen 8080

<VirtualHost *:8080>
    LogLevel error
    
    <Location />
        ProxyPass http://hostname1:2014/
        ProxyPass http://hostname2:2014/
        #ProxyPassReverse http://mywebsite.jamescoyle.net/
    </Location>
    
</VirtualHost>

  

須要注意,2014端口後面須要添加一個 / 否則 url 的轉換會出錯。服務器

關閉 hostname1 上的服務後,apache 會把 request 路由到 hostname2 上,和我需求一致。負載均衡

反向代理搭建完畢後我依然對某些配置不是很理解,好比  ProxyPassReverse,ServerName 等等。測試

 

 

後記:上面並無實現負載均衡。url

<VirtualHost *:2014>
    LogLevel info

    <Proxy balancer://mycluster>
        BalancerMember http://host1:2015
        BalancerMember http://host2:2015
    </Proxy>

    ProxyPass / balancer://mycluster/


</VirtualHost>

  

我覺得配上兩個 ProxyPass 就實現了負載均衡,實際並不是如此, ProxyPass 配置多條的話,後面的會覆蓋前面的,可是好處是當一個 node down 掉後,apache 會自動路由到可用的。上面的配置纔是真正的負載均衡,策略是默認的 byRequests. 須要注意的是, BalanceMember 後面沒有 /,ProxyPass 後面有 /spa

配置完測試了幾回,發現兩個 node 都有請求的到來。.net

 

關於配置:

apache 提供了不少詳細的配置,用於自定義反向代理/負載均衡的行爲。好比,lbmethod 能夠選取 byRequests, byTraffic 等等,還能夠設置 lbfactor, timeout, retry

相關文章
相關標籤/搜索