NashTech Blog

How to Run Your Project on Nginx: A Step-by-Step Guide

Table of Contents

Deploying a project using Nginx is a common and efficient way to serve your web application. Nginx is a high-performance web server that can also function as a reverse proxy, load balancer, and HTTP cache. In this blog post, we’ll walk you through the process of setting up and running your project on Nginx.

Prerequisites

Before we start, make sure you have the following:

  1. A Linux-based server (Ubuntu, Debian, CentOS, etc.).
  2. Nginx installed on your server. If not, you can install it using the package manager:
    • Ubuntu/Debian: sudo apt update && sudo apt install nginx
    • CentOS: sudo yum install nginx
  3. Your web application ready for deployment. This guide assumes your application is built and ready to be served.
  4. Basic knowledge of SSH and command-line usage.

Step 1: Install Nginx

First, ensure Nginx is installed on your server. You can check if Nginx is already installed by running:

nginx -v

If Nginx is not installed, use the appropriate command for your distribution:

Ubuntu/Debian:

sudo apt update
sudo apt install nginx

CentOS:

sudo yum install nginx

Once installed, start and enable Nginx to run on boot:

sudo systemctl start nginx
sudo systemctl enable nginx

Step 2: Configure Nginx for Your Project

Nginx configuration files are usually located in /etc/nginx/. The main configuration file is nginx.conf, but it’s better to create separate configuration files for different sites. This allows for easier management and maintenance.

Navigate to the Nginx sites-available directory (common on Debian-based systems):

cd /etc/nginx/sites-available/

Create a new configuration file for your project, e.g., myproject.conf:

sudo nano myproject.conf

Edit the configuration file with the necessary settings. Here’s a basic example for a static website or a simple web application:

server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        root /var/www/myproject;
        index index.html index.htm;
    }

    location /api {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

  • server_name: Replace example.com with your domain name.
  • root: Set this to the directory where your project’s files are located.
  • location /api: This block forwards requests to a backend server running on 127.0.0.1:5000 (you can replace this with your actual backend server address and port).

Save and exit the file (Ctrl + X, then Y, and Enter to confirm).

Step 3: Enable Your Site

To enable your site configuration, create a symbolic link from the configuration file in sites-available to sites-enabled:

sudo ln -s /etc/nginx/sites-available/myproject.conf /etc/nginx/sites-enabled/

Then, test your Nginx configuration for syntax errors:

sudo nginx -t

If the test is successful, reload Nginx to apply the changes:

sudo systemctl reload nginx

Step 4: Set Up Firewall Rules

If you have a firewall enabled, you’ll need to allow traffic on HTTP (port 80) and, if using HTTPS, on HTTPS (port 443).

For example, on Ubuntu with UFW:

sudo ufw allow 'Nginx Full'

Step 5: Verify and Test Your Setup

Visit your domain name in a web browser to verify that your site is accessible. Ensure that the application is functioning as expected and that all resources (like CSS, JavaScript, images) are loading properly.

Step 6: Set Up SSL/TLS (Optional but Recommended)

For securing your site with HTTPS, you can use a free SSL certificate from Let’s Encrypt. The Certbot tool can automate this process.

Install Certbot:

sudo apt install certbot python3-certbot-nginx

Obtain and Install the Certificate:

sudo certbot --nginx -d example.com -d www.example.com

Follow the prompts to complete the setup.

Verify the certificate installation and auto-renewal:

sudo certbot renew --dry-run

Conclusion

Congratulations! You’ve successfully set up and run your project on Nginx. This setup provides a solid foundation for serving your web applications efficiently. Depending on your needs, you can further optimize Nginx settings, implement advanced caching strategies, or set up load balancing for high-traffic sites.

If you encounter any issues, check the Nginx error logs located in /var/log/nginx/ for more information. Additionally, the Nginx documentation and community forums are excellent resources for troubleshooting and learning more about advanced configurations.

Picture of somyanegi321

somyanegi321

Leave a Comment

Your email address will not be published. Required fields are marked *

Suggested Article

Scroll to Top