Backend Development 5 min read

Nginx Configuration Cheat Sheet: Common Settings and Examples

This article provides a concise Nginx cheat sheet covering essential configuration snippets such as listening ports, access logs, server names, static assets, redirects, reverse proxy, load balancing, and SSL settings, along with links to an online visual configuration tool.

Architecture Digest
Architecture Digest
Architecture Digest
Nginx Configuration Cheat Sheet: Common Settings and Examples

Nginx is a high‑performance HTTP and reverse‑proxy web server that also offers IMAP/POP3/SMTP services, popular among developers for its rich feature set, stability, example configurations, and low resource consumption.

The article compiles frequently used Nginx configuration snippets to help readers set up common scenarios.

Listening Ports

server {
    # Standard HTTP Protocol
    listen 80;
    # Standard HTTPS Protocol
    listen 443 ssl;
    # For http2
    listen 443 ssl http2;
    # Listen on 80 using IPv6
    listen [::]:80;
    # Listen only on using IPv6
    listen [::]:80 ipv6only=on;
}

Access Log

server {
    # Relative or full path to log file
    access_log /path/to/file.log;
    # Turn 'on' or 'off'
    access_log on;
}

Server Name (Domain)

server {
    # Listen to yourdomain.com
    server_name yourdomain.com;
    # Listen to multiple domains
    server_name yourdomain.com www.yourdomain.com;
    # Listen to all domains
    server_name *.yourdomain.com;
    # Listen to all top‑level domains
    server_name yourdomain.*;
    # Listen to unspecified Hostnames (IP address itself)
    server_name "";
}

Static Assets

server {
    listen 80;
    server_name yourdomain.com;
    location / {
        root /path/to/website;
    }
}

Redirect

server {
    listen 80;
    server_name www.yourdomain.com;
    return 301 http://yourdomain.com$request_uri;
}
server {
    listen 80;
    server_name www.yourdomain.com;
    location /redirect-url {
        return 301 http://otherdomain.com;
    }
}

Reverse Proxy

server {
    listen 80;
    server_name yourdomain.com;
    location / {
        proxy_pass http://0.0.0.0:3000;
        # where 0.0.0.0:3000 is your application server (e.g., node.js) bound on 0.0.0.0 listening on port 3000
    }
}

Load Balancing

upstream node_js {
    server 0.0.0.0:3000;
    server 0.0.0.0:4000;
    server 123.131.121.122;
}
server {
    listen 80;
    server_name yourdomain.com;
    location / {
        proxy_pass http://node_js;
    }
}

SSL Configuration

server {
    listen 443 ssl;
    server_name yourdomain.com;
    ssl on;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/privatekey.pem;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /path/to/fullchain.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_session_timeout 1h;
    ssl_session_cache shared:SSL:50m;
    add_header Strict-Transport-Security max-age=15768000;
}
# Permanent Redirect for HTTP to HTTPS
server {
    listen 80;
    server_name yourdomain.com;
    return 301 https://$host$request_uri;
}

The article also mentions a visual Nginx configuration generator (https://nginxconfig.io/) that can produce configurations for scenarios like reverse proxy, HTTPS, HTTP/2, IPv6, caching, WordPress, CDN, Node.js, Python/Django, etc., with source code available at github.com/digitalocean/nginxconfig.io and the tool hosted on digitalocean.com.

Load BalancingconfigurationnginxReverse ProxyWeb Serverssl
Architecture Digest
Written by

Architecture Digest

Focusing on Java backend development, covering application architecture from top-tier internet companies (high availability, high performance, high stability), big data, machine learning, Java architecture, and other popular fields.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.