CentOS 7
 

mod_proxy を利用する#2
2015/08/03
 
mod_proxy モジュールを有効にして、特定のコンテンツへのリクエストを別の Web サーバーに転送するリバースプロキシ機能の設定をします。
(1) www.srv.world [10.0.0.31] - Webサーバー#1
(2) node01.srv.world [10.0.0.51] - Webサーバー#2
(1) のサーバーの / 以下のリクエストを (2) のサーバーの / 以下へ転送します。
[1] mod_proxy は httpd パッケージに含まれているため、パッケージの追加インストールは不要です。また、mod_proxy モジュールはデフォルトで有効になっているため、プロキシ設定をするのみで OK です。
# モジュールはデフォルトで有効になっている

[root@www ~]#
grep "mod_proxy" /etc/httpd/conf.modules.d/00-proxy.conf

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
.....
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so

[root@www ~]#
vi /etc/httpd/conf.d/r_proxy.conf
# 新規作成

<IfModule mod_proxy.c>
    ProxyRequests Off
    <Proxy *>
        Require all granted
    </Proxy>
   
# 転送先サーバとディレクトリ

    ProxyPass / http://node01.srv.world/
    ProxyPassReverse / http://node01.srv.world/
</IfModule>
[root@www ~]#
systemctl restart httpd

  転送設定をした / へアクセスして、設定通りバックエンドのサーバーが応答するか確認します。
[2]
[1]の設定に加えて、負荷分散をすることも可能です。
(1) www.srv.world [10.0.0.31] - Webサーバー#1
(2) node01.srv.world [10.0.0.51] - Webサーバー#2
(3) node02.srv.world [10.0.0.52] - Webサーバー#3
(1) のサーバーの / 以下のリクエストを (2),(3) のサーバーへ、リクエスト数に応じて負荷分散をするように設定します。
[root@www ~]#
vi /etc/httpd/conf.d/r_proxy.conf
# 新規作成

<IfModule mod_proxy.c>
    ProxyRequests Off
    <Proxy *>
        Require all granted
    </Proxy>
   
# lbmethod でロードバランス方法を指定。転送量のバイト数で負荷分散する「bytraffic」も指定可能。

    ProxyPass / balancer://cluster lbmethod=byrequests
    <proxy balancer://cluster>
        BalancerMember http://node01.srv.world/ loadfactor=1
        BalancerMember http://node02.srv.world/ loadfactor=1
    </proxy>
</IfModule>
[root@www ~]#
systemctl restart httpd

  転送設定をした / へアクセスして動作確認します。 ブラウザの更新ボタンを何度か押下し、バックエンドサーバーが切り替わることを確認してください。
 
Tweet