mod_proxy モジュールを有効にして、特定のコンテンツへのリクエストを別の Web サーバーに転送するリバースプロキシ機能の設定をします。
(1) のサーバーの / 以下のリクエストを (2) のサーバーの / 以下へ転送します。
mod_proxy は httpd パッケージに含まれているため、パッケージの追加インストールは不要です。また、mod_proxy モジュールはデフォルトで有効になっているため、プロキシ設定をするのみで OK です。
# モジュールはデフォルトで有効になっている |
[root@localhost ~]# 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@localhost ~]# vi /etc/httpd/conf.d/r_proxy.conf |
# 新規作成 |
<IfModule mod_proxy.c> ProxyRequests Off <Proxy *> Require all granted </Proxy> # 転送先サーバとディレクトリ ProxyPass / http://node01.hoge.com/ ProxyPassReverse / http://node01.hoge.com/ </IfModule> |
[root@localhost ~]# systemctl restart httpd |
転送設定をした / へアクセスして、設定通りバックエンドのサーバーが応答するか確認します。
上記の設定に加えて、負荷分散をすることも可能です。
(1) のサーバーの / 以下のリクエストを (2),(3) のサーバーへ、リクエスト数に応じて負荷分散をするように設定します。
[root@localhost ~]# 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.hoge.com/ loadfactor=1 BalancerMember http://node02.hoge.com/ loadfactor=1 </proxy> </IfModule> |
[root@localhost ~]# systemctl restart httpd |
転送設定をした / へアクセスして動作確認します。 ブラウザの更新ボタンを何度か押下し、バックエンドサーバーが切り替わることを確認してください。