# Nginx 配置说明 ## 快速部署 ### 前提条件 1. 一台 Ubuntu/Debian 服务器 2. 域名 `rwaadmin.szaiai.com` 的 DNS A 记录已指向服务器 IP 3. 防火墙开放 80 和 443 端口 ### 一键安装 ```bash # 1. 上传项目到服务器 scp -r ./admin-web user@server:/opt/ # 2. SSH 登录服务器 ssh user@server # 3. 运行 Nginx 安装脚本 cd /opt/admin-web/nginx sudo chmod +x install.sh sudo ./install.sh ``` ## 手动安装步骤 ### 1. 安装 Nginx 和 Certbot ```bash sudo apt update && sudo apt upgrade -y sudo apt install -y nginx certbot python3-certbot-nginx ``` ### 2. 配置防火墙 ```bash sudo ufw allow 'Nginx Full' sudo ufw allow OpenSSH sudo ufw enable ``` ### 3. 创建 Nginx 配置 ```bash # 复制配置文件 sudo cp rwaadmin.szaiai.com.conf /etc/nginx/sites-available/rwaadmin.szaiai.com # 启用站点 sudo ln -s /etc/nginx/sites-available/rwaadmin.szaiai.com /etc/nginx/sites-enabled/ # 删除默认站点 (可选) sudo rm /etc/nginx/sites-enabled/default # 测试配置 sudo nginx -t ``` ### 4. 申请 SSL 证书 ```bash # 创建验证目录 sudo mkdir -p /var/www/certbot # 先创建临时 HTTP 配置用于验证 # (或使用 certbot --nginx 自动配置) # 申请证书 sudo certbot certonly --webroot -w /var/www/certbot -d rwaadmin.szaiai.com # 或使用 Nginx 插件自动配置 sudo certbot --nginx -d rwaadmin.szaiai.com ``` ### 5. 重载 Nginx ```bash sudo nginx -t && sudo systemctl reload nginx ``` ## 证书管理 ### 查看证书 ```bash sudo certbot certificates ``` ### 手动续期 ```bash sudo certbot renew ``` ### 测试续期 ```bash sudo certbot renew --dry-run ``` ### 自动续期 Certbot 会自动创建 systemd timer 进行证书续期: ```bash # 查看 timer 状态 sudo systemctl status certbot.timer # 查看续期日志 sudo journalctl -u certbot ``` ## 常用命令 ```bash # Nginx 状态 sudo systemctl status nginx # 启动/停止/重启 sudo systemctl start nginx sudo systemctl stop nginx sudo systemctl restart nginx # 重载配置 (不中断服务) sudo systemctl reload nginx # 测试配置语法 sudo nginx -t # 查看访问日志 sudo tail -f /var/log/nginx/rwaadmin.szaiai.com.access.log # 查看错误日志 sudo tail -f /var/log/nginx/rwaadmin.szaiai.com.error.log ``` ## 文件结构 ``` nginx/ ├── README.md # 本文档 ├── install.sh # 一键安装脚本 ├── setup-ssl.sh # SSL 配置脚本 └── rwaadmin.szaiai.com.conf # Nginx 站点配置 ``` ## 故障排除 ### 1. 证书申请失败 - 确认域名 DNS 已正确解析到服务器 IP - 确认 80 端口可访问 - 检查 `/var/www/certbot` 目录权限 ### 2. 502 Bad Gateway - 确认 Docker 容器正在运行: `docker ps` - 确认应用监听 3000 端口: `curl localhost:3000` ### 3. 证书过期 ```bash # 手动续期 sudo certbot renew --force-renewal sudo systemctl reload nginx ```