CentOS7

Apache httpd : 特定のコンテンツへのリクエストを転送する

mod_proxy モジュールを有効にして、特定のコンテンツへのリクエストを別の Web サーバーに転送するリバースプロキシ機能の設定をします。

  1. www.hoge.com [10.0.0.31] - Webサーバー#1
  2. node01.hoge.com [10.0.0.51] - Webサーバー#2

(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. www.hoge.com [10.0.0.31] - Webサーバー#1
  2. node01.hoge.com [10.0.0.51] - Webサーバー#2
  3. node02.hoge.com [10.0.0.52] - Webサーバー#3

(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

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


トップ   編集 凍結解除 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-10-28 (月) 22:37:13