嘿,朋友!你是不是也有过这样的困扰:买了个阿里云的轻量应用服务器,想搭个网站或者部署几个服务,但不知道怎么让它们通过一个域名统一访问?别急,今天我就来给你支个招——用 Nginx 做反向代理,让你的多个项目“共处一室”,还能对外只留一个门面。关键是,整个过程超级简单,哪怕你是第一次接触服务器,跟着我一步步来,绝对能搞定!

什么是反向代理?先搞明白这个再动手
咱们先不急着敲命令,得先把“反向代理”这四个字给掰扯清楚。说白了,它就像你家小区门口那个保安大叔。你朋友来找你,他不会直接把人放进去乱窜,而是先问清楚找谁,然后帮你转达、引导。Nginx 就是这个“保安”,它站在最前面,接收所有外部请求,再根据规则把请求转发给后面真正干活的服务。
比如你有两个项目:一个跑在 3000 端口的前端页面,另一个是 5000 端口的后端 API。没有反向代理的话,用户就得记住两个地址,还可能被浏览器安全策略搞得很头疼。但有了 Nginx 反向代理,你可以让 yourdomain.com 访问前端,yourdomain.com/api 走后端,看起来就是一个完整的网站,用户体验直接拉满!
准备工作:买服务器、装系统、连上去
既然要动手,第一步当然是有个服务器。我强烈推荐阿里云的轻量应用服务器,价格便宜、配置够用,特别适合个人项目和小团队。而且操作界面贼友好,不像 ECS 那么复杂,新手也能快速上手。
选好服务器之后,建议选择 Ubuntu 20.04 或 22.04 系统,稳定又省心。创建完实例后,阿里云会给你一个公网 IP 和登录密码(或者密钥)。这时候打开终端(Mac/Linux)或者用 PuTTY(Windows),ssh 连上去就 OK 了。
友情提示:如果你还没买服务器,或者想省点钱,赶紧去领张阿里云优惠券!新用户经常有大额折扣,续费也能用,省下的都是纯利润啊~
安装 Nginx:一句话搞定
连接上服务器后,第一件事就是更新软件包列表:
sudo apt update
然后安装 Nginx:
sudo apt install nginx -y
就这么一句命令,等它跑完,Nginx 就装好了。你可以用 sudo systemctl status nginx 看看状态,如果显示“active (running)”,那就说明服务已经启动成功。
现在打开浏览器,输入你的公网 IP 地址,应该就能看到“Welcome to nginx!”的默认页面了。恭喜你,第一步成功!
配置反向代理:实战演练
接下来就是重头戏了。假设你现在有两个本地服务:
- 前端项目运行在
localhost:3000 - 后端 API 运行在
localhost:5000
你想让用户通过域名访问时,自动把请求分发到对应的服务。那咱们就开始改配置吧!
1. 找到并编辑默认站点配置文件
Nginx 的配置文件一般在 /etc/nginx/sites-available/default。我们可以用 nano 编辑器来修改:
sudo nano /etc/nginx/sites-available/default
你会看到一堆配置,别慌,我们只关心 server 这个块。先把里面默认的内容清一清,换成下面这段:
server {
listen 80;
server_name yourdomain.com; # 替换成你自己的域名
location / {
proxy_pass http://localhost:3000;
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;
}
location /api/ {
proxy_pass http://localhost:5000/;
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;
}
}
2. 配置说明:每行都在干啥?
来,我逐行解释一下,让你心里有底:
listen 80;:监听 80 端口,也就是 HTTP 默认端口。server_name yourdomain.com;:这里填你的域名。记得提前在域名服务商那里把 A 记录解析到你的服务器 IP。location /:匹配根路径,所有不带/api的请求都走这里,转发到 3000 端口。proxy_pass:真正的转发目标。- 下面一堆
proxy_set_header:是用来传递客户端真实信息的,比如 IP 地址、协议类型,避免后端服务“蒙在鼓里”。 location /api/:注意结尾的斜杠,表示以/api/开头的路径都会被代理到后端服务,并且自动去掉前缀。
特别提醒:proxy_pass 后面加不加斜杠很重要!比如你写 http://localhost:5000 不带斜杠,那么访问 /api/user 时,会被转发成 http://localhost:5000/api/user;但如果写了 http://localhost:5000/ 带斜杠,就会变成 http://localhost:5000/user,相当于去掉了 /api 前缀。根据你的后端路由设计来决定怎么写。
测试配置 & 重启 Nginx
改完配置可不能直接重启,万一写错了,Nginx 启动失败,网站就打不开了。所以先做个语法检查:
sudo nginx -t
如果输出显示“syntax is ok”和“test is successful”,那就可以放心重启了:
sudo systemctl restart nginx
这时候再打开浏览器,访问你的域名,如果前端页面正常加载,并且调用 /api/xxx 接口也能拿到数据,那就说明反向代理配置成功了!🎉
进阶技巧:加个 HTTPS 更安全
现在都 2024 年了,HTTP 明文传输早就过时了。浏览器还会给标“不安全”,影响用户体验。所以强烈建议你给网站加上 HTTPS。
用 Let’s Encrypt 的免费证书是最划算的方案。先安装 Certbot:
sudo apt install certbot python3-certbot-nginx -y
然后运行:
sudo certbot --nginx -d yourdomain.com
按照提示操作,Certbot 会自动帮你申请证书、修改 Nginx 配置、设置自动续期。几分钟后,你的网站就能用 https:// 安全访问了,小绿锁安排上!
常见问题排查
配置过程中难免遇到坑,我给你总结几个高频问题:
- 页面打不开,显示 502 Bad Gateway:大概率是后端服务没起来,或者端口没开。用
curl localhost:3000测试一下本地能不能访问。 - 静态资源 404:检查前端构建后的文件是否放在正确目录,或者确认
proxy_pass转发路径有没有写错。 - 跨域问题还在?:用了反向代理后,前后端同域了,理论上不会有跨域。如果还有,看看前端代码里是不是写了完整域名请求,改成相对路径就行。
- 修改配置没生效?:别忘了
nginx -t和systemctl reload nginx,有时候缓存也会捣乱,清下浏览器缓存试试。
反向代理让运维更轻松
看到这儿,你应该已经掌握了在阿里云轻量服务器上配置 Nginx 反向代理的全套流程。从安装到配置,再到加 HTTPS,整套下来其实也就十几分钟。关键是思路清晰:Nginx 是“门面担当”,负责接待和分流;你的应用专心干活就行,不用暴露在公网前线。
这种架构不仅安全,还特别灵活。以后你想加个博客、再搭个管理后台,都可以用同样的方式,通过不同的路径或子域名来区分,完全不用换服务器。
最后再啰嗦一句:如果你是刚开始玩服务器,真的别犹豫,趁阿里云有活动,赶紧领张阿里云优惠券,首单能省不少。省下来的钱,买杯奶茶犒劳自己不香吗?
好了,今天的教程就到这里。
内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。
本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/149811.html