cPanel comes with Apache web server by default. It does not mean that we cannot integrate Nginx inside. With some minor changes, we can install Nginx to listen to port 80 and forward any PHP process to Apache on another port 8080. Apache is not really good in handling static files, so we will pass this task to Nginx. You will noticed that your memory and CPU will decrease once you have done this setup.
Warning: This setting is not suitable for shared hosting environment. VPS and Dedicated server only.
1. Install mod_rpaf:
– Since Nginx will be reverse proxy for Apache, we don’t want our log file to record the proxy IP. We want the real IP as usual. This will make sure our stats page like Webalizer and AWstats will record the correct information. So we need to install mod_rpaf which is “Reverse Proxy Add Forward” module for Apache. You can download that at http://stderr.net/apache/rpaf/download:
cd /usr/local/src wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz tar -xzf mod_rpaf-0.6.tar.gz cd mod_rpaf-* apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
– Once installed, we need to load the module into Apache configuration. Since cPanel already has Include Editor for Apache, we will use that functions. Login to WHM > Service Configuration > Apache Configuration > Include Editor > Pre Main Include > All Versions and paste following text:
LoadModule rpaf_module modules/mod_rpaf-2.0.so RPAFenable On RPAFproxy_ips 127.0.0.1 22.214.171.124 # replace the value with your server IP RPAFsethostname On RPAFheader X-Real-IP
– Click Update > Restart Apache. The module should be loaded after restart.
Note: You can do this manually. Just open /etc/httpd/conf/httpd.conf with your editor then add lines above.
service httpd restart
2. Change Apache listen port:
– Before we install Nginx, we need to change Apache port to 8080. Login to WHM > Server Configuration > Tweak Settings > Apache non-SSL IP/port: 8080
Note: You can use another Port (I used port 8080) but you should make sure that your firewall allows that port.
My case, I installed CSF (ConfigServer Security & Firewall – csf v5.49) on my XEN VPS (Centos 6 32bit + Cpanel)
So to open that port (8080) , i must go to Plugins > ConfigServer Security & Firewall > ConfigServer Firewall > # Allow incoming TCP ports > TCP_IN > add port 8080
Now , SAVE AND RESTART CSF
– We need to run following command so cPanel will remember that Apache configuration template has changed:
/usr/local/cpanel/bin/apache_conf_distiller --update --main /scripts/rebuildhttpdconf