JOURNAL / WORDS & IDEAS

Nginx 部署笔记:静态文件与反向代理

整理 Nginx 站点配置、生效检查和反向代理的基础概念。

阅读设置
  1. nginx配置文件通常位于/etc/nginx目录下,主要的配置文件是 /etc/nginx/nginx.conf,网站配置通常在 /etc/nginx/sites-available/ 目录里,而需要在 /etc/nginx/sites-enabled/ 目录中创建符号链接来启用它们。如果网站需要添加域名,网站的配置就是要在/etc/nginx/sites-enabled/目录下创建域名独立的配置文件,例如/etc/nginx/sites-available/example.com。
  2. 修改配置文件
server {
    listen 80;
    server_name example.com www.example.com; # 请将你的域名替换掉yourdomain.com
    return 301 https://$host$request_uri; # 将HTTP请求重定向到HTTPS
}

server {
    listen 443 ssl; # 监听443端口并启用SSL
    server_name example.com www.example.com; # 请将你的域名替换掉yourdomain.com

    # SSL证书配置
    ssl_certificate /path/to/your/certificate.crt; # 替换为你的证书文件绝对路径
    ssl_certificate_key /path/to/your/private.key; # 替换为你的私钥文件绝对路径

    # 推荐的安全增强配置
    ssl_protocols TLSv1.2 TLSv1.3; # 使用安全的TLS协议
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384; # 使用安全的加密套件
    ssl_prefer_server_ciphers off;

    # 网站根目录和默认文件
    root /var/www/html; # 替换为你的网站文件实际存放目录
    index index.html index.htm;

    # 前端路由配置(重要:用于支持Vue/React等单页应用)
    location / {
        try_files $uri $uri/ /index.html;
    }

    # 反向代理配置(将/api开头的请求转发给SpringBoot后端)
    location /api/ {
        proxy_pass http://localhost:8080; # 确保端口与你的后端应用端口一致
        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;
    }

    # 错误页面配置(可选)
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
}
  1. 使配置文件生效
## 检查当前启用的站点
sudo ls -la /etc/nginx/sites-enabled/
## 创建符号链接,启用你的站点
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

## 禁用默认站点(如果存在)
sudo rm -f /etc/nginx/sites-enabled/default

## 测试配置
sudo nginx -t

## 重新加载Nginx
sudo systemctl reload nginx

## 检查是否生效
sudo netstat -tlnp | grep 443

生效配置与代理信任

sites-available 的文件只有被主配置 include(常通过 sites-enabled 的链接)后才生效。修改前备份,运行 nginx -t 后再 reload。应用不能无条件信任任意来源的 X-Forwarded-For,只信任已配置的反向代理。