Apache httpd : Configure mod_proxy2025/01/29 |
|
Enable [mod_proxy] module to configure reverse proxy settings. This example is based on the environment like follows.
-----------+---------------------------+-----------
| |
|10.0.0.31 |10.0.0.51
+----------+-----------+ +-----------+----------+
| [ www.srv.world ] | | [ node01.srv.world ] |
| Web Server#1 | | Web Server#2 |
+----------------------+ +----------------------+
|
| [1] | [mod_proxy] is included in [httpd] package and it is enabled by default, so it's possible to configure quickly. |
|
# modules are enabled by default [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_balancer_module modules/mod_proxy_balancer.so ..... .....
[root@www ~]#
vi /etc/httpd/conf.d/revers_proxy.conf # create new
<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
Require all granted
</Proxy>
# backend server and forwarded path
ProxyPass / http://node01.srv.world/
ProxyPassReverse / http://node01.srv.world/
</IfModule>
systemctl reload httpd |
| [2] | If SELinux is enabled, change policy. |
|
[root@www ~]# setsebool -P httpd_can_network_connect on |
| [3] | Access to frontend server to verify backend server responses like follows. |
|
| [4] |
It's possible to configure load balancing settings.
-----------+---------------------------+--------------------------+------------
| | |
|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/httpd/conf.d/revers_proxy.conf # create new
<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
Require all granted
</Proxy>
# specify the way of load balancing with [lbmethod]
# also possible to set [bytraffic] which means httpd balances requests by traffic
ProxyPass / balancer://cluster lbmethod=byrequests
<proxy balancer://cluster>
BalancerMember http://node01.srv.world/ loadfactor=1
BalancerMember http://node02.srv.world/ loadfactor=1
</proxy>
</IfModule>
systemctl reload httpd |
| [5] | Access to frontend server to verify backend servers response like follows. |
|
|
| Sponsored Link |
|
|