1.1 多站点与反向代理进阶
一句话判断
站点数量一上十个,“建站”就不值钱了,值钱的是“组织”和“转发”。分组解决组织问题,反向代理解决转发问题,TCP/UDP 代理补上四层的缺口。
基础用法(建一个站、绑一个域名、开 HTTPS)我们默认你已经会了。这一节讲三个进阶问题:多站点怎么组织不乱、反向代理怎么配才稳、什么场景该用哪种建站方式。
先把六种建站方式摆清楚
很多人用了两年 1Panel,都没分清创建网站时的六个入口分别为什么存在。先给一张速查表:
| 建站方式 | 给什么用 | 典型场景 |
|---|---|---|
| 一键部署 | 应用商店里的应用(WordPress、Halo 等)直接变网站 | 建博客、建企业站,最快 |
| 运行环境 | 已装好的 PHP / Java / Node.js / Go / Python / .NET 环境 | 自己写的项目,代码已经准备好 |
| 反向代理 | 把请求转发到另一个服务 | 后端服务跑在别的端口/别的机器 |
| 静态网站 | 纯 HTML / 前端构建产物 | Vue/React 打包出来的 dist |
| 子网站 | 复用父网站的目录,绑定新域名 | 一个 PHP 应用开多个租户/分站 |
| TCP/UDP 代理 | 四层流量转发(OpenResty Stream 模块) | 数据库、消息队列等非 HTTP 服务 |
选型原则一句话:应用能一键部署就一键部署;自己的代码用运行环境;服务在别处用反向代理;只有静态文件用静态网站。
子网站和反向代理最容易搞混
举个例子你就明白了:
假设你有一个 PHP 应用 example.com,现在想给某个客户开一个独立的入口 client-a.com,但不想复制代码,想共用同一套程序。
- 用子网站:父级网站选
example.com,运行目录选父网站目录下的client-a子目录,绑定client-a.com。代码共用、目录隔离。 - 用反向代理:
client-a.com代理到http://127.0.0.1:8080(你另起的一个服务)。这是两个独立程序。
区别在“是不是同一套代码”。子网站是“一个应用多个入口”,反向代理是“一个入口转给别的应用”。
注意官方文档的明确限制:子网站只能为已有的 PHP 或静态页面类型网站创建,运行目录必须是父网站运行目录下的子目录。Java、Node 类站点没有子网站。
TCP/UDP 代理:一个容易被忽略的能力
这是 1Panel 比较少被提到的功能,但实战中很有用。它用 OpenResty 的 Stream 模块转发四层流量,适合非 HTTP 的服务:
| 场景 | 怎么配 |
|---|---|
| 内网 MySQL 只想通过某台网关机暴露 | 监听 3306,负载均衡填内网 MySQL 地址 |
| 多个 Redis 做入口分流 | 监听 6379,填多个上游 + 权重 |
| 游戏/消息服务的 TCP 入口 | 监听对应端口,开负载均衡 |
两个硬性前提(官方文档明确写了):
- OpenResty 版本不低于
1.27.1.2-3-3-focal,不满足时页面会直接禁止创建; - 监听端口必须未被占用,且要在主机防火墙和云安全组里放行。
还有一个认知点:TCP/UDP 代理不提供 HTTPS 配置,加密和认证由上游协议自己负责。别指望在这里配证书。
配置参数说明:
| 参数 | 说明 |
|---|---|
| 监听端口 | 对外监听,多个端口用英文逗号分隔 |
| UDP | 开启用 UDP,否则 TCP |
| 负载均衡 | 上游服务器列表,可设权重、失败次数、连接数、失败超时 |
| 代号 | 在 1Panel 里标识这个代理配置的名字 |
多站点组织:分组不是装饰
站点一多,列表会变成一锅粥。1Panel 的网站分组就是解决这个问题的。
三步把分组用起来
- 建分组:网站列表上方有分组入口,按业务维度建,比如“客户站”“内部工具”“测试环境”。
- 设默认分组:设置默认分组后,新建网站会自动归入,省得每次手选。
- 用分组筛选:列表支持按类型、分组和名称筛选,处理某个客户的所有站点时一筛就出来。
分组还有一个隐藏价值:批量操作。网站列表支持批量操作,按分组筛出来再批量处理,比一个个点快得多。
分组设计的建议
| 维度 | 适不适合做分组 | 例子 |
|---|---|---|
| 按客户/项目 | 适合 | acme-corp、project-x |
| 按环境 | 适合 | prod、staging、dev |
| 按技术栈 | 一般 | PHP 站和 Node 站混在一个项目里时反而乱 |
| 按域名后缀 | 不适合 | 没有管理价值 |
实战建议:一个分组 = 一套备份策略 + 一批人负责。 这样分组、权限、备份边界是对齐的。
反向代理进阶:三个容易踩的坑
反向代理本身简单——填个代理地址就行。但下面三个坑,进阶用户一定会遇到。
坑一:代理地址写 127.0.0.1,结果服务在容器里
1Panel 的反向代理地址可以填“已有服务的地址”,也能从已安装应用里选。如果你的后端是 1Panel 应用商店装的应用,它跑在 Docker 容器里,127.0.0.1 可能不对。
容器里的服务对宿主机来说是另一个网络命名空间。这时候要么用应用映射出来的端口,要么用容器名/容器网络地址。最省心的办法:创建反向代理时直接从“已安装应用”里选,1Panel 会帮你填对地址。
坑二:忘了开缓存,后端被压垮
网站配置的反向代理标签页里,可以开启并配置反向代理缓存规则,也能一键清除当前缓存。
动态接口不要缓存,静态资源一定要缓存。判断标准很简单:
| 请求类型 | 缓存 | 理由 |
|---|---|---|
/api/*、登录、支付 |
不缓存 | 结果随时变,缓存会出数据错误 |
| 图片、CSS、JS、字体 | 缓存 | 内容不变,省后端算力 |
配完缓存后注意:改了静态资源发现没生效,先想缓存,去清一次代理缓存再排查。
坑三:负载均衡规则建了却没用上
这是 1Panel 里一个反直觉的设计,官方文档写得很明白:
当前页面仅创建负载均衡规则,使用负载均衡规则需要在创建反向代理时使用
http://<负载均衡名称>。
也就是说,负载均衡规则建完,它只是“定义”,你得在反向代理的代理地址里填 http://负载均衡名称 才真正生效。很多人建完规则以为已经负载均衡了,其实流量还是走单点。
负载均衡可配的参数:
| 参数 | 作用 |
|---|---|
| 权重 | 流量按权重分配到上游 |
| 失败次数 | 多少次失败后摘掉上游 |
| 连接数 | 上游最大连接限制 |
| 失败超时 | 失败计数的时间窗口 |
反向代理的配套能力速查
反向代理不是孤立功能,网站配置里还有几个和它配合的能力,进阶后都会用到:
| 能力 | 干什么用 | 关键点 |
|---|---|---|
| 密码访问 | 给整个站或特定路径加访问密码 | 支持全局配置和按路径配置 |
| CORS | 跨域资源共享 | 允许携带凭证时,来源不能配成通配 |
| 真实 IP | 在 CDN/代理后拿到访客真实 IP | 要配可信 IP 来源 |
| 重定向 | URL 转发,常用于换域名、强制跳转 | 比 Nginx 里手写 rewrite 直观 |
| 防盗链 | 防止别的网站直接引用你的图片 | 按来源校验 |
| 流量限制 | 限制带宽和访问流量 | 和 WAF 的频率限制是两回事 |
注意区分:网站配置里的流量限制是“限速”,WAF 里的频率限制是“限请求次数防刷”。两个都开,效果叠加,但别搞混了调哪儿。
HTTPS 与证书:进阶的三个细节
反向代理站点开 HTTPS 是常规操作,三个细节值得记住:
第一,HTTP 选项有三种,不是“开/关”: - 自动将 HTTP 跳转到 HTTPS(最常用) - 允许直接访问 HTTP(调试期用) - 禁止 HTTP 访问(最严格)
第二,HSTS 和 HTTP3 都能开,但 HTTP3 有代价。 官方文档明确说:HTTP/3 更快,但不是所有浏览器都支持,开启后可能导致部分浏览器无法访问。开之前想清楚你的用户群。
第三,自动续签有前提。 只有通过 DNS 账户或 HTTP 验证申请的证书能自动续签;手动 DNS 验证和手动上传的证书不能自动续签。证书列表的开关状态就是准信。
续签依赖 ACME 账户、DNS 账户或 HTTP 验证路径持续可用。换了 DNS 服务商的 API 密钥、改了域名解析、网站配置变了,都可能让续签失败。建议:证书快到期前手动看一眼列表,别完全信任“自动”。
更多证书细节(ACME 账户、DNS 账户、自签 CA)见 《1Panel 官方文档:功能手册》 的证书章节,本书不重复参数表。
一个完整的实战案例
场景:一台 4 核 8G 的服务器,要跑这些东西——
| 服务 | 怎么建 |
|---|---|
| 公司官网(WordPress) | 一键部署,分组 prod |
| 内部管理后台(Node.js) | 运行环境,绑定内网域名 |
| 客户 A 的分站 | 子网站,复用 PHP 应用目录 |
| 另一台机器上的 AI 服务 | 反向代理,指向内网 IP |
| 给合作伙伴的 MySQL 入口 | TCP/UDP 代理 |
这个组合覆盖了五种建站方式。建完后第一件事:给每个分组配默认备份策略(见 1.3 节),然后逐个开 WAF 观察模式(见 1.4 节)。
本节要点
- 六种建站方式各有定位,选型看“代码在不在本机”和“是不是 HTTP 服务”;
- 分组按“客户/项目/环境”切,一个分组对齐一套备份和一批负责人;
- 负载均衡规则建完必须在反向代理里填
http://规则名才生效; - TCP/UDP 代理有 OpenResty 版本要求,且不管 HTTPS;
- 自动续签只认 DNS 账户和 HTTP 验证两种来源。
下一节:既然所有网站都跑在 OpenResty 上,我们就来好好说说 OpenResty 的设置和 Nginx 配置怎么改才安全。
