一台服务器,如何部署多个应用
如果我想同时部署多个应用,比如一个是小程序后台,一个是个人网站,甚至再加一个测试环境,该怎么在同一台服务器上运行它们呢?
其实方法很简单,核心就在于——反向代理(Reverse Proxy)。 正好在正式部署 API 前演示下。
首先要知道,我们为什么需要用反向代理呢?
在一台服务器上,如果你部署多个应用,它们通常会监听不同的端口,例如:
•小程序 API 在 5000 端口
•网站在 8080 端口
•管理后台在 7001 端口
但访问时,用户并不会在意这些端口号,他们只希望通过不同的域名(或路径)访问:
•
api.example.com→ 小程序接口•
www.example.com→ 网站主页•
admin.example.com→ 后台管理
这时候,就需要请反向代理 登场了。
它像一个“门卫”,站在服务器最前端。 用户所有的请求都会先经过它,它根据域名或路径的不同,将流量分发给后端的不同应用。
为什么叫“反向代理”?
理解“反向代理”前,先看它的“正向代理”兄弟。
•正向代理 是客户端的代理。比如你访问国外网站时,通过代理服务器中转访问。服务器只看到代理的请求,看不到真实用户是谁。
•反向代理 则反过来,是服务器端的代理。 用户并不知道背后有多少台服务器、运行了哪些服务,他们只面对一个统一的入口(比如 Nginx)。
从请求方向来看:
•正向代理:代理的是“用户请求” → 帮用户访问外部网站。
•反向代理:代理的是“网站响应” → 帮网站把不同请求分发给内部应用。
因此叫 “反向”,因为它隐藏的不是用户,而是服务器。
你可以把它想象成餐厅前台。顾客点菜(发请求),前台根据菜名(域名或路径)把订单分发到不同的厨房(后端服务)。顾客只看到前台,却不知道厨房有几间。
反向代理的工作原理
假设你在服务器上部署了三个服务:
反向代理(通常是 Nginx)接收到请求后,会根据访问的域名自动转发,比如:
nginx server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:5000;
}
}
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
这样,你的三套程序就可以在同一台服务器上独立运行,互不干扰,又都能通过不同的域名访问。
服务中常见问题与建议
1端口占用冲突 每个应用监听的端口必须不同,否则会导致启动失败。
2SSL 证书配置 如果需要 HTTPS,可在宝塔面板的「SSL」中为每个域名单独申请证书。 宝塔支持 Let’s Encrypt 免费证书,非常方便。
3防火墙放行 后端端口无需对外开放,只要反向代理能访问即可。 外部访问统一通过 80 或 443 端口完成。
4多环境部署 若需要测试环境,可用子路径区分(如
/test/),在反向代理中灵活配置转发规则。
总结
反向代理的好处是显而易见的:
•让多个应用共用一台服务器;
•提高系统安全性;
•方便统一配置 HTTPS 与日志管理。


