帖子详情
给客户做服务器备案接入成功后,小程序的后台 API 终于可以上线了。之前有客户到,他的服务器性能还不错,想更充分的利用起来,但他有一个新问题:
如果我想同时部署多个应用,比如一个是小程序后台,一个是个人网站,甚至再加一个测试环境,该怎么在同一台服务器上运行它们呢?
其实方法很简单,核心就在于——反向代理(Reverse Proxy)。 正好在正式部署 API 前演示下。
首先要知道,我们为什么需要用反向代理呢?
在一台服务器上,如果你部署多个应用,它们通常会监听不同的端口,例如:
- •小程序 API 在 5000 端口
- •网站在 8080 端口
- •管理后台在 7001 端口
但访问时,用户并不会在意这些端口号,他们只希望通过不同的域名(或路径)访问:
- •
api.example.com→ 小程序接口 - •
www.example.com→ 网站主页 - •
admin.example.com→ 后台管理
这时候,就需要请反向代理 登场了。
它像一个“门卫”,站在服务器最前端。 用户所有的请求都会先经过它,它根据域名或路径的不同,将流量分发给后端的不同应用。
为什么叫“反向代理”?
理解“反向代理”前,先看它的“正向代理”兄弟。
- •正向代理 是客户端的代理。比如你访问国外网站时,通过代理服务器中转访问。服务器只看到代理的请求,看不到真实用户是谁。
- •反向代理 则反过来,是服务器端的代理。 用户并不知道背后有多少台服务器、运行了哪些服务,他们只面对一个统一的入口(比如 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 与日志管理。
版权:言论仅代表个人观点,不代表官方立场。转载请注明出处:https://www.xiuqiwl.com/forum/1299.html
还没有评论呢,快来抢沙发~