常用 nginx 配置片段参考。

极简配置

参考:申请泛域名证书

反向代理(HTTP)

upstream backend {
    server 127.0.0.1:8089;
}

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

    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;

    location / {
        proxy_pass http://backend;
    }

    # 静态资源由 nginx 直接处理
    location ~* ^/(images|js|css|media|static)/ {
        root /var/www/html;
        expires 30d;
    }

    location ~ /\.ht {
        deny all;
    }
}

反向代理(HTTPS)

server {
    listen 443 ssl;
    server_name www.example.com;

    ssl_certificate      /etc/nginx/cert/example.com.fullchain.pem;
    ssl_certificate_key  /etc/nginx/cert/example.com.key.pem;
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers          HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

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

负载均衡

轮询(默认)

upstream backend {
    server 192.168.1.11:80;
    server 192.168.1.12:80;
    server 192.168.1.13:80;
}

加权轮询

upstream backend {
    server 192.168.1.11:80 weight=3;
    server 192.168.1.12:80;
    server 192.168.1.13:80;
}

最少连接

upstream backend {
    least_conn;
    server 192.168.1.11:80;
    server 192.168.1.12:80;
    server 192.168.1.13:80;
}

IP Hash

upstream backend {
    ip_hash;
    server 192.168.1.11:80;
    server 192.168.1.12:80;
    server 192.168.1.13:80;
}

URI Hash

upstream backend {
    hash $request_uri;
    server 192.168.1.11:80;
    server 192.168.1.12:80;
    server 192.168.1.13:80;
}

静态站点(SPA)

server {
    listen 80;
    server_name example.com;

    root /app/dist;
    index index.html;

    gzip on;
    gzip_types text/plain text/css application/javascript application/xml image/jpeg image/png;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

文件服务器

server {
    listen 9050;
    server_name _;
    charset utf-8;
    root /share/fs;

    autoindex on;
    autoindex_exact_size on;
    autoindex_localtime on;
}

参考