全部文章

Nginx 基础配置

Nginx 安装、静态站点、反向代理、HTTPS 配置与性能优化

目录 14 节

Nginx 基础配置

Nginx 是高性能的 HTTP 和反向代理服务器。

这页最适合当作“从 0 到 1 配出可用 Nginx”的起点。很多人第一次接触 Nginx 时最容易混淆的不是语法,而是它到底在当前架构里扮演什么角色。

Nginx 常见用途

  • 托管静态文件
  • 反向代理到应用服务
  • 统一 HTTPS 和域名入口
  • 缓存静态资源
  • 为多个站点做虚拟主机分流

推荐的上手顺序

  1. 先跑一个最简单的静态站点
  2. 再学会把请求反代到 localhost:3000 之类的应用服务
  3. 然后补 HTTPS 和 80 → 443 重定向
  4. 最后再做 gzip、缓存、上传大小等优化

先建立“入口代理”的认知,会比直接背配置块更容易。

通过 Docker 运行

docker run -d -p 80:80 --name nginx nginx

Docker 适合快速试验和本地验证;正式环境还要补卷挂载、配置文件管理、日志和证书目录。

静态站点配置

server {
    listen 80;
    server_name example.com;
    root /usr/share/nginx/html;
    index index.html;

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

    # 缓存静态资源
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

这是最常见的 SPA / 静态文档站配置思路,try_files 能避免刷新子路由时报 404。

反向代理

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

    location / {
        proxy_pass http://localhost:3000;
        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;
    }
}

绝大多数 Node、Python、Go Web 服务部署到公网时,都会在前面放一层这样的 Nginx。

HTTPS 配置(Let's Encrypt)

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

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    location / {
        root /usr/share/nginx/html;
        try_files $uri $uri/ /index.html;
    }
}

# HTTP 重定向到 HTTPS
server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}

证书配置不是“部署完成后再想”的附加项,公网服务建议一开始就纳入部署流程。

进阶:性能优化

# 在 http 块中添加
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml;

# 连接优化
keepalive_timeout 65;
client_max_body_size 50m;

不要盲目复制网上大段“性能优化模板”。对小站点来说,先保证配置可读、可维护,比堆很多指令更重要。

常用命令

nginx -t          # 测试配置
nginx -s reload   # 重载配置
nginx             # 启动
nginx -s stop     # 停止

常见问题

配置改了不生效

  • 先执行 nginx -t 看是否有语法错误
  • 再确认你修改的是实际加载的配置文件
  • 最后执行 reload 而不是只改文件不重载

访问域名返回 502

大多数时候是后端服务没启动、端口写错,或 Nginx 根本连不到上游服务。先排查应用本身,再看代理配置。

刷新前端路由 404

通常是静态站点没加 try_files $uri $uri/ /index.html;

推荐联动阅读

  • 先看 Nginx 基础配置
  • 再看 HTTPS / SSL 自动化
  • 最后结合具体应用(Nuxt、Node API、Docker 服务)做项目化落地

参考链接

阅读建议
  • - 先读标题和摘要,再结合目录决定从哪个章节开始精读。
  • - 看到具体命令、配置或步骤时,尽量在自己的环境里同步验证。
  • - 如果你只是快速查资料,可先看目录和相关文档,再决定是否深入全文。
适合谁看
  • - 希望把零散经验整理成长期可复用工作流的人
  • - 想先建立认知,再决定是否深入实践的人
  • - 希望阅读时顺手建立自己的操作清单或收藏体系的人
执行前检查
  • - 先浏览标题、摘要和目录,带着问题阅读会更高效
  • - 顺手记录真正对你有用的命令、链接和注意事项,避免重复搜索
  • - 如果页面里提到相关文档,尽量一起打开对照,效果通常更完整
同类内容
← 上一篇PowerToys 实用工具集