Simple guide on How to setup Nginx Reverse Proxy

Setup Nginx Reverse Proxy

In this tutorial, we will learn how to setup Nginx Reverse Proxy. but first, let’s discuss in brief what a Reverse Proxy is & why do we need it?

Reverse Proxy

A reverse proxy is a server that takes the requests (HTTP/HTTPS) & then transfers or distributes them to the backend server. The backend server can be an application server like Tomcat, wildfly or Jenkins, etc or it can even be another web server like Apache.

But why do we even need a reverse proxy in front of the app or web server at all, we need it because,

1- It hides point of origin, thus making our backend server more secure & less susceptible to attacks,

2- Since the reverse proxy is the first point of contact for all requests, it can help encrypt/decrypt the request. This takes the load off from the backend server,

3- It can also be used for caching of content, which again reduces the load from other servers,

4- it can also act as a load-balancer.

We have already discussed how we can configure Apache Web Server as reverse proxy, now let’s talk about how we configure an Nginx reverse proxy.

Recommended Read : How to use Apache reverse proxy as Load Balancer

How to setup Nginx Reverse Proxy


We will need a backend server, it can be any app server or even a webserver. But remember, if you are using a web server that is also on the same server as Nginx reverse proxy, make sure that the other web server is not using the same TCP port as Nginx reverse proxy i.e. 80 & 443.

For the purpose of this tutorial, I will use a tomcat server hosted at a different server on IP , working at port 8080 (refer to our tutorial here for detailed Apache Tomcat installation). As mentioned above, you can opt for a different application server or web server.

Also Read : Easy way to integrate Apache with modsecurity on Ubuntu


Now let’s discuss briefly, the installation of Nginx on,


Nginx is available with default Ubuntu Repositories. So simply install it using the following command,

$ sudo apt-get update && sudo apt-get install nginx


We need to add some repos for installing Nginx on CentOS & we have created a detailed ARTICLE HERE for Nginx installation on CentOS/RHEL.

Now start the services & enable it for boot,

# systemctl start nginx

# systemctl enable nginx

At this point, we can open the web-browser & enter the server IP of Nginx, to see a default webpage & make sure the Nginx is working with no issues.


Now that Nginx is installed & working we will move ahead with the Nginx reverse proxy configuration part. But first, we will remove the default configuration for the Nginx, it can be done with the following command,

# rm /etc/nginx/conf.d/default.conf

Alternatively, we can also remove the content inside the above-mentioned file & make the configuration for Nginx reverse proxy there, but I prefer to use a separate file for each site configured. So let’s create a new conf file for our Nginx reverse proxy,

# vi /etc/nginx/conf.d/test-proxy.conf

& make the following entries to the file,

server {

listen 80;

listen [::]:80;


location / {

proxy_pass ;



Now save the file & exit. Here in the configuration, we are telling the about the server_name & then under the ‘location’ section, we are providing the backend server i.e. our Apache tomcat server. Now to implement the changes made, we will restart the Nginx service but before that, we must check if the configuration made are correct or not,

# ngnix -t

or we can also provide the complete path for the configuration file,

# nginx -t -c /etc/nginx/conf.d/test-proxy.conf

Once the check returns with zero errors, we can restart the Nginx service,

# systemctl restart nginx

Note:- Also make sure that your backend server is working properly before moving onto the next step.


Now the next & final step is to check if the Nginx reverse proxy is working fine or not. So open a web browser & enter the Nginx server address/URL. Now when the page finishes loading, we should be seeing the apache tomcat page & not the default Nginx page, which we saw earlier.

That’s it, this was our tutorial on how to setup Nginx reverse proxy. We now end this tutorial, please feel free to send any questions or queries you have regarding this tutorial.

If you think we have helped you or just want to support us, please consider these :-

Connect to us: Facebook | Twitter

Linux TechLab is thankful for your continued support.



-- is a beginner friendly website where you can learn Linux Tips & tricks,Scripting, also has lots of tutorials aimed at making Linux easy.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

The Dogmatic Scrum Master

How do I Git it?

Exploring Distributed System Theory: Availability and Consistency

Test Network Updates —Nodes Dry Run, ERC20 Audit & Forkless Upgrade

If you have a Pulse, you have a purpose!

Can you change the output font using print statement in Python?

Why documentation matters, and why you should include it in your code

Just Start

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store

LinuxTechLab is a beginner friendly website where you can learn Linux Tips & tricks,Scripting, also has lots of tutorials aimed at making Linux easy.

More from Medium

Docker A to Z

Git Undo Scenarios

Updating AWS ECS Taskdefintions and Services via Ansible

How to use Jenkins to deploy apps directly from GitHub to AWS EC2

Getting Started Page for Jenkins