How to configure Nginx as a reverse proxy for Apache on CentOS
Nginx and Apache are powerful web servers. Apache’s power and Nginx’s speed are well known, However, both of them do have drawbacks. Apache is hard on server’s memory while Nginx can’t process PHP on its own and needs the help of the PHP-FPM or similar modules for dynamic content. In this tutorial, we are going to combine the two web servers to get the best result of each other, We are going to set Nginx as our static content processor and Apache to processing the back end and dynamic content.
Install and configure Nginx via below mentioned command
Step: - Run an update on your repositories list first:
yum update -y
Now install Epel repository easily with:
yum install epel-release -y
Then install nginx using the command below:
yum install nginx -y
Enable and start Nginx service:
systemctl enable nginx
systemctl start nginx
Configure Nginx
Create a config file with the following command:
nano /etc/nginx/conf.d/default.conf
Paste the following configuration in your file then save and exit:
server {
listen 80;
root /usr/share/nginx/html/;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.pup$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
location ~ /\.ht {
deny all;
}
}
Install and Configure Apache
If you have Apache already installed, you can skip this section. install Apache web server with the command below:
yum install httpd
Start and enable the httpd service:
systemctl enable httpd
systemctl start httpd
Configure Apache
We need to configure the Apache to take the backend part of the job, for that cause we need to configure the Apache to listen on port 8080:
nano /etc/httpd/conf/httpd.conf
Find the line that starts with “listen” remove it and paste the following lines instead:
Listen 127.0.0.1:8080
Then find the line that starts with “DocumentRoot” and modify it like below:
DocumentRoot "/usr/share/nginx/html/"
The “DocumentRoot” should be the same on both Nginx and Apache, if you have VirtualHost(s) configured, it should be configured on both of them. Save and Exit.
Services Cloudtechtiq offers: