Nginx 常用命令及配置片段 - 码剑客

常用运维命令,以及静态站点、反向代理、HTTPS、缓存压缩、限流与单页应用等可直接粘贴的配置片段。

Nginx 1.18+更新于 2026-10-29共 21 条

常用命令

检查配置语法,改完配置先执行这一步

sudo nginx -t

平滑重载配置,不中断现有连接

sudo nginx -s reload

等待现有请求处理完再退出

sudo nginx -s quit

查看编译参数与已加载模块

nginx -V

查看 Nginx 服务状态

systemctl status nginx

实时查看错误日志

tail -f /var/log/nginx/error.log

静态站点

最基础的静态站点配置

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

确保 Nginx 运行用户对站点目录有读权限

sudo chown -R www-data:www-data /var/www/example

反向代理

转发到本机服务并透传真实 IP 与协议

location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    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;
}

WebSocket 代理,必须带 Upgrade 与 Connection 头

location /ws/ {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 60s;
}

设置上游连接与读写超时,避免请求长时间挂起

proxy_connect_timeout 5s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;

HTTPS 与跳转

启用 HTTPS 并只保留 TLS 1.2 / 1.3

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate     /etc/nginx/ssl/example.com.pem;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_session_cache   shared:SSL:10m;
}

HTTP 全站 301 跳转到 HTTPS

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

缓存与压缩

开启 gzip 压缩,只压缩文本类资源

gzip on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_types text/css application/javascript application/json image/svg+xml;

带 hash 的静态资源长缓存 30 天

location ~* \.(js|css|png|jpg|jpeg|gif|svg|woff2)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
    access_log off;
}

index.html 等入口文件禁止缓存,避免发布后拿到旧版本

add_header Cache-Control "no-cache, no-store, must-revalidate";

限流与安全响应头

按客户端 IP 限流,突发 20 个请求

# http 块中定义
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;

# server 或 location 中使用
limit_req zone=api burst=20 nodelay;

常用安全响应头,降低点击劫持与 MIME 嗅探风险

add_header X-Frame-Options SAMEORIGIN always;
add_header X-Content-Type-Options nosniff always;
add_header Referrer-Policy strict-origin-when-cross-origin always;

禁止访问 .git、.env 等隐藏文件

location ~ /\.(?!well-known).* { deny all; }

单页应用(history 模式)

刷新子路由时不返回 404

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

前后端分离:静态资源走前端,接口反向代理到后端

location /api/ {
    proxy_pass http://127.0.0.1:8080/;
    proxy_set_header Host $host;
}

本网站使用 Cookie 以确保您在我们的网站上获得最佳体验。 隐私政策.