一台服务器跑多个网站?Nginx 反向代理十分钟上手

举报
yd_250975324 发表于 2026/10/27 10:51:30 2026/10/27
【摘要】 一台服务器跑多个网站?Nginx 反向代理十分钟上手新手上云常遇到一个问题:服务器只有一个 80 端口,却想同时跑博客、API 和一个静态小站,端口后面再挂一串数字既难记又难看。这时候就该请出 Nginx 反向代理:用户只访问域名,Nginx 在后面按规则把请求分发到不同的服务。 反向代理到底是什么正向代理是替客户端出门,反向代理是替服务器接客。浏览器访问 blog.example.com...

一台服务器跑多个网站?Nginx 反向代理十分钟上手

新手上云常遇到一个问题:服务器只有一个 80 端口,却想同时跑博客、API 和一个静态小站,端口后面再挂一串数字既难记又难看。这时候就该请出 Nginx 反向代理:用户只访问域名,Nginx 在后面按规则把请求分发到不同的服务。

反向代理到底是什么

正向代理是替客户端出门,反向代理是替服务器接客。浏览器访问 blog.example.com,Nginx 收到请求后,根据域名或路径把它转发到本机 3000 端口的博客程序;访问 api.example.com,则转发到 8000 端口的后端接口。对外只暴露 80/443 两个端口,后面的服务端口全部藏在内网,安全性和整洁度都上了一个台阶。

三步搭起来

第一步安装,Ubuntu/Debian 一条命令:sudo apt install nginx,装完 systemctl status nginx 确认它在运行,浏览器访问服务器 IP 能看到欢迎页就说明底子没问题。

第二步写配置。在 /etc/nginx/sites-available/ 新建一个文件,比如 mysite,核心就几行:

server {
    listen 80;
    server_name blog.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

server_name 决定这条规则匹配哪个域名,proxy_pass 是真正的后端地址。那两个 proxy_set_header 别漏:不传 Host,后端拿到的域名就不对;不传 X-Real-IP,后端日志里看到的全是 127.0.0.1,排障时会很痛苦。

第三步启用并重载:sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/,先 sudo nginx -t 检查语法,看到 successful 再 sudo systemctl reload nginx。reload 不会中断已有连接,比 restart 温柔得多,生产环境优先用它。

常见坑

  • 改完配置没生效:先查 nginx -t,再确认域名解析到了这台服务器,最后看是不是浏览器缓存。
  • 502 Bad Gateway:Nginx 本身没问题,是后端没起来或端口写错了,先 curl 127.0.0.1:3000 确认后端能通。
  • 一个域名配了多条规则:Nginx 按 server_name 精确匹配,配错域名请求会落到默认站点上。

掌握这套模板后,再加 HTTPS 也只是多几行证书配置的事:域名分流、动静分离、负载均衡,都是从这几行长出来的。先把一个站点的代理跑通,再慢慢加第二个、第三个,一台服务器撑起多个小项目完全够用。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。