很多新手打开宝塔面板——添加反代,即反向代理页面,又是域名、又是目标 URL,还有发送域名(host) 看得头大,今天拿商场开店的例子,把每个框对应啥讲得明明白白。
一、先打比方讲清楚概念
把反向代理整套逻辑比作一家商场,角色分工特别好记: 前台就是 Nginx 反向代理,是所有访客的必经中转站 顾客不会直接冲进店内,所有请求先过前台,再由前台转发到内部门店。
请看下图:
1. 域名输入框 = 商场对外大门
我们在浏览器输入的网址、IP,全部填在这里。 外人只能看见这个大门地址,完全不知道内部服务真实位置 不管后端开了多少程序,对外只留这一个访问入口,黑客没法直接攻击内网服务,安全性直接拉满。
2. 目标 URL 地址 = 商场内部店铺
就是你本地 / 内网跑的程序,比如http://127.0.0.1:15700这类本地服务。 后端真实服务藏在内网,外网完全无法直接访问 门店只接待前台转过来的请求,顾客没有直达通道,从根源隐藏服务器真实地址。
3. 发送域名 (host):默认 $http_host 别乱改
相当于顾客进门时报的店名,前台要把这个店名同步传给内部店铺。 绝大多数场景保持 $http_host 默认值,不用手动修改 只有后端程序强制绑定固定域名时,才需要在这里手动填写对应域名。
二、反向代理到底有啥实用好处?
- 统一管理网站入口 多个后端程序,只用一个域名对外,增减后端服务不用改动域名解析。
- 天然防护内网服务器 内部店铺不暴露公网,外网只能访问代理层,大幅降低被攻击风险。
- 统一处理 SSL、缓存 证书、静态资源缓存全部交给前台处理,后端程序不用重复配置。
三、新手极简操作小结
填反向代理只抓 3 个关键点:
- 域名:填访客浏览器打开的公网地址(大门)
- 目标 URL:填本地运行的后端程序地址(内部店铺)
- 发送域名:直接保留默认
$http_host即可
延伸阅读:反向代理和正向代理的联系和区别
正向代理替「用户」上网;反向代理替「服务器」接待访客。 换句话讲,同样是中间人,正向代理帮用户藏自己,反向代理帮服务器藏后台。正向、反向代理本质都是代理,区别只在「替谁干活」
核心本质:两者都属于中间中转站,都不生产内容,只负责转发请求
一、相同点(为啥都叫代理)
用户和真实资源之间,多了一层中间机器;
两端不会直接互通,全部请求、响应都经过中转;
都能隐藏一端真实 IP,起到隔离、防护作用。
二、核心分水岭:代理站哪边、替谁做事 正向代理:站用户这边,替用户访问服务器 顾客(用户)→中介(正向代理)→商家(网站) 隐藏的是用户,网站不知道真实访客是谁 代表:VPN、翻墙代理
反向代理:站服务器这边,替服务器接待用户 访客(外网)→前台 Nginx(反向代理)→后端服务(内网程序) 隐藏的是后端服务器,用户看不到真实业务地址 代表:宝塔反向代理、Nginx 负载均衡
宝塔的反向代理: 所有人只访问大门域名,由前台 Nginx 转发给内网店铺服务,这就是标准反向代理,网站用户完全看不到后端真实地址; 而 VPN 那种正向代理,是你主动去找中介,网站看不到你的真实 IP。
