# Nginx 配置说明

## 快速部署

### 前提条件

1. 一台 Ubuntu/Debian 服务器
2. 域名 `update.szaiai.com` 的 DNS A 记录已指向服务器 IP
3. 防火墙开放 80 和 443 端口

### 一键安装

```bash
# 1. 上传项目到服务器
scp -r ./mobile-upgrade user@server:/opt/

# 2. SSH 登录服务器
ssh user@server

# 3. 运行 Nginx 安装脚本
cd /opt/mobile-upgrade/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 update.szaiai.com.conf /etc/nginx/sites-available/update.szaiai.com

# 启用站点
sudo ln -s /etc/nginx/sites-available/update.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 update.szaiai.com

# 或使用 Nginx 插件自动配置
sudo certbot --nginx -d update.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/update.szaiai.com.access.log

# 查看错误日志
sudo tail -f /var/log/nginx/update.szaiai.com.error.log
```

## 文件结构

```
nginx/
├── README.md                    # 本文档
├── install.sh                   # 一键安装脚本
├── setup-ssl.sh                 # SSL 配置脚本
└── update.szaiai.com.conf       # Nginx 站点配置
```

## 故障排除

### 1. 证书申请失败

- 确认域名 DNS 已正确解析到服务器 IP
- 确认 80 端口可访问
- 检查 `/var/www/certbot` 目录权限

### 2. 502 Bad Gateway

- 确认 Docker 容器正在运行: `docker ps`
- 确认应用监听 3020 端口: `curl localhost:3020`

### 3. 证书过期

```bash
# 手动续期
sudo certbot renew --force-renewal
sudo systemctl reload nginx
```
