Shashi Techlogues

Setting up Nginx as a reverse proxy for Node.js App

Okay.. but what is a reverse proxy?

A reverse proxy is a web server that centralizes internal services and provides unified interfaces to the public. Requests from clients are forwarded to a server that can fulfill it before the reverse proxy returns the server’s response to the client.

Nginx is a popular choice to use as a reverse proxy for your node.js application.

Got it. Now let’s set up Nginx

Let’s say your nodejs server is running locally on localhost:3000.

We will set up Nginx to get the request and forward the request to our nodejs server.

Installing Nginx on ubuntu

sudo apt-get update
sudo apt-get install nginx

Configure Nginx

  1. Disable the default, virtual host
unlink /etc/nginx/sites-enabled/default

2. Create a configuration file

cd /etc/nginx/sites-available
sudo nano reverse-proxy.conf

3. Put the following content in the file

server {
listen 80;
listen [::]:80;

access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;

location / {
proxy_pass http://127.0.0.1:3000;
}
}

4. Create a symbolic link

ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf

5. Test the configuration

nginx -t

6. If all good restart the server

sudo service nginx restart

Now go to localhost or localhost:80 and the request will be forwarded to the node.js application.

Congratulations our reverse proxy is successfully setup.

Image for post

If you are interested in System Design also read how to setup Load balancer in your app here:

https://blog.shashi.dev/2021/01/implementing-load-balancing-with.html

Thanks for reading. If you have some feedback, please provide your response or reach out to me on Twitter or Github.

Happy Coding!!!