安装 Nginx

sudo apt update
sudo apt install nginx
sudo systemctl enable --now nginx

反向代理配置示例

以代理本地 vLLM 服务(监听 127.0.0.1:8000)为例:

# /etc/nginx/sites-available/api.example.com
server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # 流式响应(SSE)需要关闭缓冲
        proxy_buffering off;
        proxy_read_timeout 300s;
    }
}
sudo ln -s /etc/nginx/sites-available/api.example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

使用 Let’s Encrypt 签发 HTTPS 证书

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d api.example.com

certbot 会自动修改配置文件,添加 443 端口监听与证书路径,并配置 HTTP 到 HTTPS 的重定向。证书默认 90 天有效期,certbot 会自动注册续期任务,可通过以下命令验证:

sudo certbot renew --dry-run

基础限流配置

保护后端推理服务,避免单一来源占满并发:

limit_req_zone $binary_remote_addr zone=api_limit:10m rate=5r/s;

server {
    location / {
        limit_req zone=api_limit burst=10 nodelay;
        proxy_pass http://127.0.0.1:8000;
    }
}

Hugo 静态站点的配置示例

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

    root /var/www/blog/public;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    ssl_certificate     /etc/letsencrypt/live/blog.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/blog.example.com/privkey.pem;
}

小结

无论是代理 AI 推理接口还是托管 Hugo 静态站点,Nginx + Let’s Encrypt 都是低成本且成熟稳定的组合,配合限流与合理的超时设置即可满足大多数个人和小团队场景。