16.7.2. Install the Mod_proxy HTTP Connector Into Apache HTTPD
mod_proxy is a load-balancing module provided by Apache. This task presents a basic configuration. For more advanced configuration, or additional details, refer to Apache's mod_proxy documentation at https://httpd.apache.org/docs/2.2/mod/mod_proxy.html. For more details about mod_proxy from the perspective of JBoss EAP 6, refer to Section 16.7.1, “About the Apache mod_proxy HTTP Connector” and Section 16.1.3, “Overview of HTTP Connectors”.
Prerequisites
- Either JBoss Enterprise Web Server HTTPD or Apache HTTPD needs to be installed. A standalone HTTPD is provided as a separate download in the Red Hat Customer Portal at https://access.redhat.com, in the JBoss EAP 6 download area. Refer to Section 16.3.2, “Install the Apache HTTPD included with JBoss EAP 6” for information about this HTTPD if you wish to use it.
- The
mod_proxymodules need to be installed. Apache HTTPD typically comes with themod_proxymodules already included. This is the case on Red Hat Enterprise Linux and the HTTPD that comes with the JBoss Enterprise Web Server. - You need
rootor administrator privileges to modify the HTTPD configuration. - Determine the HTTPD configuration directory. This is the directory containing the
conf/andmodules/directories for Apache HTTPD. This will be referred to asHTTPD_HOMEfor the remainder of this task. Typical values include the following:/etc/httpd/EWS_HOME/httpd/, starting from where JBoss Enterprise Web Server is installed
- In our example we assume that JBoss EAP 6 is configured with the HTTP or HTTPS web connector. This is part of the Web subsystem configuration. Refer to Section 15.1, “Configure the Web Subsystem” for information about configuring the Web subsystem.
Enable the
mod_proxymodules in the HTTPDLook for the following lines in yourHTTPD_HOME/conf/httpd.conffile. If they are not present, add them to the bottom. If they are present but the lines begin with a comment (#) character, remove the character. Save the file afterward. Usually, the modules are already present and enabled.LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so # Uncomment these to proxy FTP or HTTPS #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so #LoadModule proxy_connect_module modules/mod_proxy_connect.so
Add a non-load-balancing proxy.
Add the following configuration to yourHTTPD_HOME/conf/httpd.conffile, directly beneath any other<VirtualHost>directives you may have. Replace the values with ones appropriate to your set-up.This example uses a virtual host. See the next step to use the default HTTPD configuration.<VirtualHost *:80> # Your domain name ServerName Domain_NAME_HERE ProxyPreserveHost On # The IP and port of JBoss EAP 6 # These represent the default values, if your HTTPD is on the same host # as your JBoss EAP 6 managed domain or server ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ # The location of the HTML files, and access control information DocumentRoot /var/www <Directory /var/www> Options -Indexes Order allow,deny Allow from all </Directory> </VirtualHost>
After making your changes, save the file.Add a load-balancing proxy.
To usemod_proxyas a load balancer, and send work to multiple JBoss EAP 6 servers, add the following configuration to yourHTTPD_HOME/conf/httpd.conffile. The example IP addresses are fictional. Replace them with the appropriate values for your environment.<Proxy balancer://mycluster> Order deny,allow Allow from all # Add each JBoss Enterprise Application Server by IP address and port. # If the route values are unique like this, one node will not fail over to the other. BalancerMember http://192.168.1.1:8080 route=node1 BalancerMember http://192.168.1.2:8180 route=node2 </Proxy> <VirtualHost *:80> # Your domain name ServerName YOUR_DOMAIN_NAME ProxyPreserveHost On ProxyPass / balancer://mycluster/ # The location of the HTML files, and access control information DocumentRoot /var/www <Directory /var/www> Options -Indexes Order allow,deny Allow from all </Directory> </VirtualHost>
The examples above all communicate using the HTTP protocol. You can use AJP or HTTPS protocols instead, if you load the appropriatemod_proxymodules. Refer to Apache'smod_proxydocumentation http://httpd.apache.org/docs/2.2/mod/mod_proxy.html for more details.Enable sticky sessions.
Sticky sessions mean that if a client request originally goes to a specific JBoss EAP 6 node, all future requests will be sent to the same node, unless the node becomes unavailable. This is almost always the correct behavior.To enable sticky sessions formod_proxy, add thestickysessionparameter to theProxyPassstatement. This example also shows some other parameters which you can use. Refer to Apache'smod_proxydocumentation at http://httpd.apache.org/docs/2.2/mod/mod_proxy.html for more information on them.ProxyPass /MyApp balancer://mycluster stickysession=JSESSIONID lbmethod=bytraffic nofailover=Off
Restart the HTTPD.
Restart the HTTPD server for your changes to take effect.
Your HTTPD is configured to use mod_proxy to send client requests to JBoss EAP 6 servers or clusters, either in a standard or load-balancing configuration. To configure JBoss EAP 6 to respond to these requests, refer to Section 16.3.5, “Configure JBoss EAP 6 to Accept Requests From an External HTTPD”.

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.