Ubuntu 22.04
Sponsored Link

Apache2 : mod_proxy の設定
2022/05/12
 
[mod_proxy] モジュールを有効にして、特定のコンテンツへのリクエストを別の Web サーバーに転送するリバースプロキシ機能の設定をします。
当例では以下のような環境で [Web Server#1] へのリクエストを [Web Server#2] へ転送します。
-----------+---------------------------+-----------
           |                           |
           |10.0.0.31                  |10.0.0.51
+----------+-----------+   +-----------+----------+
|   [ www.srv.world ]  |   | [ node01.srv.world ] |
|      Web Server#1    |   |      Web Server#2    |
+----------------------+   +----------------------+

[1] プロキシ用の設定を追加します。
root@www:~#
vi /etc/apache2/conf-available/revers_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:~#
a2enconf revers_proxy

Enabling conf revers_proxy.
To activate the new configuration, you need to run:
  systemctl reload apache2

root@www:~#
a2enmod proxy proxy_http

Module proxy already enabled
Considering dependency proxy for proxy_http:
Module proxy already enabled
Enabling module proxy_http.
To activate the new configuration, you need to run:
  systemctl restart apache2

root@www:~#
systemctl restart apache2

[2] 転送設定をした / へアクセスして、設定通りバックエンドのサーバーが応答するか確認します。
[3]
負荷分散をすることも可能です。
例として、[Web Server#1] へのリクエストを [Web Server#2], [Web Server#3] へ、リクエスト数に応じて負荷分散をするように設定します。
-----------+---------------------------+--------------------------+------------
           |                           |                          |
           |10.0.0.31                  |10.0.0.51                 |10.0.0.52
+----------+-----------+   +-----------+----------+   +-----------+----------+
|   [ www.srv.world ]  |   | [ node01.srv.world ] |   | [ node02.srv.world ] |
|      Web Server#1    |   |      Web Server#2    |   |      Web Server#3    |
+----------------------+   +----------------------+   +----------------------+

root@www:~#
vi /etc/apache2/conf-available/revers_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:~#
a2enconf revers_proxy

Enabling conf revers_proxy.
To activate the new configuration, you need to run:
  systemctl reload apache2

root@www:~#
a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests

Module proxy already enabled
Considering dependency proxy for proxy_http:
Module proxy already enabled
Enabling module proxy_http.
Considering dependency proxy for proxy_balancer:
Module proxy already enabled
Considering dependency alias for proxy_balancer:
Module alias already enabled
Considering dependency slotmem_shm for proxy_balancer:
Module slotmem_shm already enabled
Module proxy_balancer already enabled
Considering dependency proxy_balancer for lbmethod_byrequests:
Considering dependency proxy for proxy_balancer:
Module proxy already enabled
Considering dependency alias for proxy_balancer:
Module alias already enabled
Considering dependency slotmem_shm for proxy_balancer:
Module slotmem_shm already enabled
Module proxy_balancer already enabled
Enabling module lbmethod_byrequests.
To activate the new configuration, you need to run:
  systemctl restart apache2

root@www:~#
systemctl restart apache2

[4] 転送設定をした / へアクセスして動作確認します。アクセス毎にバックエンドサーバーが切り替われば OK です。
関連コンテンツ