Cài đặt Apache2 trên Ubuntu 22.04: Configure mod_proxy

bởi | LPI, Ubuntu

Home » LPI » Ubuntu » Cài đặt Apache2 trên Ubuntu 22.04: Configure mod_proxy

Chuẩn bị

– Kích hoạt module [mod_proxy] để cấu hình truy vấn cài đặt

Chuẩn bị DNS

– Tham khảo bài: Cài đặt DNS Server trên Ubuntu 22.04: Internal Network

root@dns:~# vi /etc/bind/dinhducthanh.local.lan
node1     IN  A       10.0.0.51
node2     IN  A       10.0.0.52

www     IN  CNAME   dinhducthanh.local.

root@dns:~# vi /etc/bind/0.0.10.db
6      IN  PTR     dinhducthanh.local.
51      IN  PTR     node1.dinhducthanh.local.
52      IN  PTR     node2.dinhducthanh.local.

root@dns:~# systemctl restart named

Chuẩn bị các server web

– Cài đặt các server web tham khảo bài: Cài đặt Apache2 trên Ubuntu 22.04
– Cài server web frontend: dinhducthanh.local

root@www:~# apt -y install apache2

root@www:~# vi /etc/apache2/conf-enabled/security.conf
# line 25 : thay đổi
ServerTokens Prod

root@www:~# vi /etc/apache2/apache2.conf
# line 70 : thêm chỉ định server name
ServerName dinhducthanh.local

root@www:~# vi /etc/apache2/sites-enabled/000-default.conf
# line 11 : thay đổi email của webmaster
ServerAdmin admin@dinhducthanh.local

root@www:~# systemctl restart apache2
root@www:~# cp /var/www/html/index.html /var/www/html/index.html.backup
root@www:~# rm -rf /var/www/html/index.html
root@www:~# vi /var/www/html/index.html
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
dinhducthanh.local Test Page
</div>
</body>
</html>
root@www:~# echo "nameserver 10.0.0.3" > /etc/resolv.conf

– Cài server web backend node1 và node2 tương tự như cài server frontend

Configure mod_proxy

– Ví dụ này có sơ đồ như sau

-----------+------------------------------+------------------
           |                              |
           |10.0.0.6                      |10.0.0.51
+----------+--------------+   +-----------+-----------------+
|[ dinhducthanh.local ]   |   |[ node1.dinhducthanh.local ] |
|      Web Server#1       |   |      Web Server#2           |
+-------------------------+   +-----------------------------+
root@www:~# vi /etc/apache2/conf-available/revers_proxy.conf
# tạo mới
<IfModule mod_proxy.c>
    ProxyRequests Off
    <Proxy *>
        Require all granted
    </Proxy>
    # backend server và đường dẫn forwarded
    ProxyPass / http://node1.dinhducthanh.local/
    ProxyPassReverse / http://node1.dinhducthanh.local/
</IfModule&gt; 
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

– Truy cập vào frontend server để xác nhận phản hồi là của backend server như ảnh

Có thể Configure mod_proxy định cấu hình cân bằng tải

– Ví dụ này có sơ đồ như sau

-----------+--------------------------+--------------------------+------------
           |                          |                          |
           |10.0.0.6                  |10.0.0.51                 |10.0.0.52
+----------+-----------+  +-----------+------------+  +-----------+------------+
|dinhducthanh.local    |  |node1.dinhducthanh.local|  |node2.dinhducthanh.local|
|      Web Server#1    |  |      Web Server#2      |  |      Web Server#3      |
+----------------------+  +------------------------+  +------------------------+
root@www:~# vi /etc/apache2/conf-available/revers_proxy.conf
# tạo mới
<IfModule mod_proxy.c>
    ProxyRequests Off
    <Proxy *>
        Require all granted
    </Proxy>
    # chỉ định cách load balancing với [lbmethod]
    # cũng có thể đặt [bytraffic] nghĩa là cân bằng các yêu cầu httpd theo lưu lượng truy cập
    ProxyPass / balancer://cluster lbmethod=byrequests
    <proxy balancer://cluster>
        BalancerMember http://node1.dinhducthanh.local/ loadfactor=1
        BalancerMember http://node2.dinhducthanh.local/ 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

– Truy cập vào frontend server để xác nhận phản hồi là của backend server như ảnh

Cài đặt Apache2 trên Ubuntu 22.04: Configure mod_proxy

Tham khảo thêm

Cài đặt ban đầu Ubuntu 22.04: Network Settings

Cài đặt Apache2 trên Ubuntu 22.04: Virtual Hostings