How to Set Up an Nginx Reverse Proxy
In the Linux operating system, a Reverse Proxy acts as an intermediary between the client (host) and the server. It takes client requests, forwards them to other servers, and returns the server’s response to the client, appearing as if it came from the proxy server itself.
The reverse proxy, often used by web servers, appears to clients like a regular web server, requiring no special configurations. Clients make ordinary requests, and the reverse proxy decides where to direct the information, delivering the final output to the client as if it were the original server. Nginx reverse proxy offers numerous benefits and is widely used as an open-source server on the internet.
This tutorial will explain what an Nginx reverse proxy is and guide you on setting it up on your virtual private server.
The Advantages of Using Nginx Reverse Proxy
Let’s delve into the reasons explaining why Nginx is so popular:
- It is simple to implement and provides the user with high-end security against Web server attacks such as DDoS and DoS
- Nginx Reverse proxy helps create a balanced load among several back-end servers and provides caching for a slower back-end server
- Nginx does not require setting up a new process for each web request from the client. Rather, the default configuration is to comprise one work process per CPU
- It can act as a reverse proxy server for various protocols such as HTTP, HTTPS, TCP, UDP, SMTP, IMAP, and POP3
- It can handle over 10000 connections with a low memory footprint. Nginx can operate multiple web servers via a single IP address and deliver each request to the right server within a LAN
- Nginx is one of the best web servers for improving the performance of static content. Additionally, it can also be helpful to serve cache content and perform SSL encryption to lower the load from the web server
- It can also be helpful when optimizing content by compressing it to boost the loading time
- Nginx can perform randomized experiments or A/B tests without placing JavaScript codes into pages.
And all of these benefits are just the tip of the iceberg! The more you use Nginx Reverse Proxy, the more features you will discover!
How to Set Up an Nginx Reverse Proxy?
Now, we will configure Nginx in front of an Apache web server. We chose the Apache server because it’s better at handling dynamic content.
So, all the static content will go to Nginx, while the dynamic content will go to Apache. This will improve performance by optimizing the delivery of content based on the handling criteria.
Next, we will define the IP address of the Nginx Proxy Server as 192.x.x.1 and the back-end Apache server as 192.x.x.2. After setting up Apache, we can move on to these steps:
Pro Tip
Check out our PuTTY tutorial to access our VPS using SSH. In addition, make sure to have the Apache web server installed and configured for this method to work.
1. Install Nginx
We’ll be using the apt command on Ubuntu 18.04:
sudo apt-get update
sudo apt-get install nginx
2. Disable the Default Virtual Host
Once you have installed Nginx, follow the below command to disable the virtual host:
sudo unlink /etc/nginx/sites-enabled/default
3. Create the Nginx Reverse Proxy
After disabling the virtual host, we need to create a file called reverse-proxy.conf within the etc/nginx/sites-available directory to keep reverse proxy information.
For this, we should first access the directory using the cd command:
cd etc/nginx/sites-available/
Then we can create the file using the vi editor:
vi reverse-proxy.conf
In the file, we need to paste in these strings:
server { listen 80; location / { proxy_pass http://192.x.x.2; } }
In the above command, the considerable point is the proxy pass is allowing the requests coming through the Nginx reverse proxy to pass along to 192.x.x.2:80, which is Apache remote socket. Thus, both the web servers – Nginx and Apache, shares the content.
Once completed, simply save the file and exit the vi editor. You can do this by keying in :wq.
To pass information to other servers, you can use the ngx_http_proxy_module in the terminal.
Now, activate the directives by linking to /sites-enabled/ using the following command:
sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf
4. Test Nginx and the Nginx Reverse Proxy
Lastly, we need to run an Nginx configuration test and restart Nginx to check its performance. Type the below command to verify the Nginx functioning on the Linux terminal:
service nginx configtest
service nginx restart
Remember, if you receive a failed test, that most likely indicates that Apache was not properly set up.
Conclusion
There are many benefits of setting up an Nginx reverse proxy in the Linux operating system. It can effectively boost performance and enhance security against malware. The Nginx reverse proxy configuration is a simple process in a Linux terminal. Although there are a plethora of ways to install and configure it, which completely depend upon your requirement, the above tutorial is hassle-free and straightforward to help you get started with a reverse proxy setup.
Comments
April 24 2020
One of the simplest and most helpful guided, loved it.
April 24 2020
Hey, glad it helped!
October 22 2020
Doesnt work at all. All I get is connection errors.
February 02 2021
Hi there, Simon! Can you clarify what errors you're getting? You can always contact our Customer Success team from your Hostinger account, they'll be happy to have a look!
March 20 2022
It works !!! Excellent !!!