Vladyslav Verpeta's blog
How to Deploy a Node.js App with Nginx


02, Jun, 2023

How to Deploy a Node.js App with Nginx


Deploying a Node.js application with Nginx as a reverse proxy is a common and efficient way to serve web applications. In this blog post, we will walk through the steps required to deploy a Node.js app using Nginx on a Linux server. By following this guide, you'll be able to ensure optimal performance, scalability, and security for your application. So, let's dive in!

1. Set up the Linux Server:

Start by setting up a Linux server. Choose a cloud provider or a physical server, and install your preferred Linux distribution. Secure the server by configuring firewall rules and enabling SSH access. Update the system packages to ensure you have the latest security patches.

2. Install Node.js and Your Application:

Install Node.js on the server by downloading the package from the official website or using a package manager like apt or yum. Once Node.js is installed, clone or copy your Node.js application code to the server. Install the project dependencies using npm or yarn.

3. Configure Nginx as a Reverse Proxy:

Next, install Nginx on the server. Update the Nginx configuration file (usually located in /etc/nginx/nginx.conf) to set up the reverse proxy. Define a new server block within the http context and configure it to listen on the desired port (e.g., 80). In the location block, specify the proxy_pass directive to forward requests to your Node.js application's address and port (e.g., http://localhost:3000). Save the configuration file and restart Nginx.

# Default Nginx configuration file (e.g., /etc/nginx/nginx.conf)

http {
# ...

server {
listen 80;  # Configure the desired port

    server_name example.com;  # Replace with your domain name or server IP

        location / {
            proxy_pass http://localhost:3000;  # Forward requests to your Node.js app's address and port
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;

# ...


4. Start the Node.js Application:

Navigate to your Node.js application's directory and start the application using a process manager like PM2 or Forever. These tools ensure that your Node.js app runs continuously, even after server reboots. Configure the process manager to automatically restart the application if it crashes.

5. Test and Monitor:

With everything set up, it's time to test your deployment. Access your server's IP address or domain name in a web browser. If everything is configured correctly, Nginx should forward the requests to your Node.js application, and you should see your application running in the browser. Test different endpoints and ensure the expected behavior.

Additionally, consider implementing monitoring and logging solutions to keep track of your application's health and performance. Tools like PM2 or dedicated monitoring services can help you monitor CPU usage, memory consumption, and request metrics.


Deploying a Node.js application with Nginx as a reverse proxy provides a robust and scalable solution. By following the steps outlined in this blog post, you can ensure that your application is served efficiently and securely. Remember to regularly update your server, monitor its performance, and stay up-to-date with the latest security best practices. Happy deploying!



I'm a software engineer and technical writer. I'm passionate about technology and love to write about it.

Related Posts