
---

## 1. 先装 Nginx

**Ubuntu / Debian：**

```bash
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx
```

检查是否正常：

```bash
curl -I http://127.0.0.1
```

---

## 2. 写反向代理配置（HTTP 80）

创建站点配置：

```bash
sudo nano /etc/nginx/sites-available/shumengya.top
```

填入：

```nginx
server {
    listen 80;
    listen [::]:80;
    server_name shumengya.top www.shumengya.top;

    # 反向代理到本机8080
    location / {
        proxy_pass http://127.0.0.1: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;

        # 如有 WebSocket / SSE 可加（不伤性能）
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
```

启用站点并检查语法：

```bash
sudo ln -s /etc/nginx/sites-available/shumengya.top /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
```

此时访问 `http://shumengya.top` 应该已经转到 `8080` 的服务了。  
（反向代理基本语法是 `location` + `proxy_pass`，上面是标准写法。

---

## 3. 申请 Let’s Encrypt 证书（Certbot）

安装 certbot + nginx 插件：

```bash
sudo apt install -y certbot python3-certbot-nginx
```

一键申请并让 certbot 自动改 Nginx 配置：

```bash
sudo certbot --nginx -d shumengya.top -d www.shumengya.top
```

按提示填邮箱、同意协议即可。  
Certbot 会自动：

- 生成证书
- 给你的 server block 加上 `listen 443 ssl` 等配置
- 额外生成一个 80→443 的跳转
- 设置自动续期任务  

---

## 4. 最终 Nginx 配置长什么样（参考）

certbot 改完后通常类似这样（你不用手抄，但知道结构即可）：

```nginx
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name shumengya.top www.shumengya.top;

    ssl_certificate /etc/letsencrypt/live/shumengya.top/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/shumengya.top/privkey.pem;

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

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

server {
    listen 80;
    listen [::]:80;
    server_name shumengya.top www.shumengya.top;
    return 301 https://$host$request_uri;
}
```

---

## 5. 续期确认（很重要但只需一次）

Let’s Encrypt 证书 90 天到期，certbot 已经加了定时续期。你只要测试一下：

```bash
sudo certbot renew --dry-run
```

看到 `Congratulations` 就 OK。

---

## 6. 常见坑快速排雷

1. **域名没解析到这台机器**  
    certbot 会报错 “DNS problem / unauthorized”。  
    → 先 `ping shumengya.top` 看 IP 是否正确。
    
2. **80/443 没放行**（云服务器安全组/防火墙）  
    确保：
    
    - 安全组开放 TCP 80、443
    - 本机 ufw/iptables 允许
    
    ```bash
	sudo ufw allow 80
	sudo ufw allow 443
    ```
    
3. **后端只监听 127.0.0.1 也没问题**  
    反代走内网回环，最安全。
    

---
