Nginx 反向代理入门:一台服务器优雅地跑多个网站

zheng头像
zheng 2026-07-20 10:06
楼主

新手玩 VPS 最常遇到一个问题:买一台服务器,想跑博客、网盘、监控面板好几个服务,但 80 和 443 端口只有一个,怎么办?

答案就是 Nginx 反向代理。一句话解释:Nginx 站在所有服务前面当"门卫",根据来访域名把请求转发到背后不同端口。

基础配置

假设服务器上跑了三个服务:

  • 博客:localhost:8080
  • NextCloud:localhost:8081
  • Uptime Kuma:localhost:3001

对应的 Nginx 配置:

# 博客
server {
    listen 80;
    server_name blog.zjunwei.com;
    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;
    }
}

# NextCloud
server {
    listen 80;
    server_name cloud.zjunwei.com;
    client_max_body_size 10G;
    location / {
        proxy_pass http://127.0.0.1:8081;
        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_pass把请求转发到哪个地址
proxy_set_header Host告诉后端原始域名
proxy_set_header X-Real-IP告诉后端真实客户端 IP
proxy_set_header X-Forwarded-Proto告诉后端前端是 HTTP 还是 HTTPS
client_max_body_size上传文件大小限制(云盘必设)

WebSocket 支持

如果后端需要 WebSocket(比如聊天应用、在线终端),加三行:

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

一键重载

改完配置先测试再重载,别直接重启:

nginx -t && nginx -s reload

配置错误不会生效,线上服务不受影响。

总结

Nginx 反向代理是自托管玩家的必备技能。三条 proxy_set_header 加一条 proxy_pass,剩下的按域名复制 server 块即可。要加新服务就加一个新 server 块,十分钟搞定。

Linux Nginx 服务器
Uptime Kuma 自建监控:网站宕机 30 秒内微信通知你 SSL 证书自动续期:Certbot + Let's Encrypt 免费 HTTPS 一劳永逸

最新回复

暂无回复,来说两句吧
评论已关闭
站点总访问量:6250