Skip to content

基础设施与域名规划 ​

更新时间:2026/10/16 09:52:54

本篇是完整上线指南的第一阶段:让系统以生产配置对外提供服务,讲清楚域名怎么分、证书谁来管、哪些环境变量缺了起不来、网关对外开哪些口。部署操作本身见对应部署文档,本篇只做决策与核对。

面向本地联调(内网穿透、自签证书)的方案不在本篇,见本地联调。

域名规划 ​

系统对外共五个必绑域名,各自承载不同角色,建议独立规划(可共享一台服务器,但不要共用域名);另有一个可选的移动端 API 域名,供小程序/APP 走独立接入线时使用:

域名承载访问者HTTPS
运营端域名Web 管理端(运营方)内部运营人员必须
商户端域名Web 商户端商户必须
支付网关域名(H5)收银台 / 聚合扫码 / 认证中转页付款人必须(面向付款人的页面,HTTP 会被浏览器与微信/支付宝拒绝)
后端 API 域名unipay 开放接口 + 通道回调入口商户业务系统、微信/支付宝服务器必须
Artemis 控制台域名消息队列控制台内部运维必须(不建议走 CDN)
移动端 API 域名(可选)小程序/APP 登录态接口 + 收银开放接口专用入口管理端/商户端小程序与 APP必须(小程序仅允许 HTTPS 域名)

四点决策依据:

  • 域名须完成 ICP 备案:微信/支付宝在配置支付目录、授权域名、二维码规则时都会校验备案与归属,未备案域名无法通过通道侧配置。
  • 五个必绑域名与后端「端点配置」一一对应(见平台初始化 - 端点配置),部署域名与端点配置不一致是上线后跳转 404、回调失败的最常见原因。
  • 移动端 API 域名是可选的隔离进阶项:不绑定时小程序/APP 经后端 API 域名接入即可正常使用(见下文网关对外接口);需要把自家客户端与第三方对接分开、让登录接口只经专用域名暴露时再绑定。它不对应「端点配置」中的任何一项,小程序合法域名登记两者取一即可。
  • 一键部署的面板会按各域名绑定目标生成网关路由(网关管理 - 域名绑定与 CDN 外层接入);源码静态部署需自行在 nginx 中规划,示例见项目构建 - 静态部署。

部署路径选择 ​

路径适合依赖
一键部署(运维面板)多数生产部署:单机 Docker 化,面板托管网关/证书/升级x86_64 Linux、≥8GB 内存、root、联网拉镜像
源码构建 + 静态部署需要定制 nginx/自管 K8s、或离线裁剪自备 JDK/Node/中间件与 nginx 配置能力

两条路径的应用配置项完全一致(见配置说明),差异只在证书与网关的托管方式:

  • 一键部署的证书归属:网关源站零证书、恒走 HTTP,HTTPS 由外层 CDN / 网关终结,证书的签发、续期、验证都在外层控制台完成,面板不负责证书。生产推荐「经 CDN 回源」模式(含回源鉴权 Token)。
  • 静态部署的证书归属:证书配在你自己的 nginx 层,面向付款人的 H5 域名必须配。

中间件生产要求 ​

PostgreSQL、Redis、Artemis 三件中间件的生产要求(一键部署已按此装配,自建时逐项核对):

  • 凭证:三者全部改掉默认/空密码(一键部署在面板「数据安全」中改密);Artemis 默认空口令在生产环境必须设置。
  • 资源:内存档位参考面板配置 - 内存档位(compact ≥4GB / standard ≥8GB 推荐 / enhanced ≥16GB)。
  • 可达性:中间件与业务容器端口默认不映射宿主机(端口暴露默认 off),保持默认即可;调试时临时开 local(绑 127.0.0.1),不要开 public。

生产环境变量 ​

源码/静态部署从 application-prod.yml 占位符读取环境变量;一键部署在面板「业务环境 → 主应用 → 应用配置」中维护等价项。标必填的变量缺失时启动直接失败(fail-fast),漏配在启动时就会暴露,不会拖到运行期。

变量分几组,完整清单见配置说明 - 生产环境变量清单:

组关键项说明
部署模式DEPLOY_MODE=PROD见下节切换生产模式
数据库DB_USERNAME / DB_PASSWORD(必填)PG 凭证
RedisREDIS_PASSWORD(必填)—
消息队列ARTEMIS_USER / ARTEMIS_PASSWORD默认空串,生产必须设置
业务密钥RSA_PRIVATE_KEY / RSA_PUBLIC_KEY / ENCRYPT_KEY(32 字符,必填)平台级签名与数据加密密钥
通道子应用CHANNEL_*_TRANSPORT_KEY(必填)主应用与通道子应用的传输密钥,缺失启动失败
IP 库IP2REGION_*风控地区拦截依赖,路径与版本须与实际 xdb 文件一致
交易TRADE_SYNC_ENABLED=true交易同步任务,生产建议开启

业务密钥不要重新生成

RSA/AES/通道传输密钥在首次部署时自动生成并固化。重新生成会导致已加密数据无法解密(通道密钥密文、敏感配置等),生产环境不要执行「重新生成」。

网关对外接口 ​

一键部署的网关在「对外接口」按路径前缀放行外部请求,未放行的路径一律拒绝(面板网关 - 对外接口)。四个接口组的默认状态与上线核对点:

接口用途默认说明
/unipay商户业务系统调用开放接口开有 API 对接商户时必须保持开启
/unipay/callback微信/支付宝等通道回调平台开走支付宝/微信通道时必须保持开启
/app-*(小程序 / APP API)管理端/商户端小程序与 APP 的登录态接口开小程序/APP 的接入生命线,见下文
/epay易支付兼容接口关用易支付协议对接时开(见可选功能)
/admin/、/mch/、/swagger-ui/ 等管理端与商户端 Web API恒封禁管理流量由前端域名的 /api/ 转发承载;/demo/、/test/ 保持封禁

小程序/APP 接入路线(面板开关卡底部的状态行实时显示当前生效路线):

  • 兼容方式(默认):小程序构建时 API 地址留空(即用后端 API 域名),依赖 /app-* 开关开启——默认开箱即用,不要随意关闭;
  • 专用入口(需第六个域名):绑定移动端 API 域名并在小程序构建时填入该地址,该域名恒放行、不受开关影响;存量小程序/APP 全部切换后,建议关闭 /app-* 开关,让登录接口只经专用域名暴露;
  • 失联:关闭 /app-* 且未绑定移动端 API 域名 = 小程序无法登录(面板关闭时有防呆确认);直接用 IP 访问时登录态接口恒不开放(登录端点防暴力破解)。

关闭 /unipay 的后果:商户系统所有 API 调用被网关拒绝(404/拒绝访问);关闭 /unipay/callback 的后果:通道回调进不来,所有订单停在待支付,只能靠手动「同步」拉状态。上线后「接口全不通」先查这里。

源码静态部署没有这层开关,等价控制在你自己的 nginx 路由中,注意不要把 /demo/、/test/、swagger 一并暴露到公网。

切换生产模式 ​

一键部署默认以 DEV 模式完成安装(放开沙箱与开发超管,便于联调)。上线前必须切换:

  1. 在面板「业务环境 → 主应用 → 应用配置」中将部署模式切为 PROD,系统会强制关闭沙箱与开发超管;PROD 下手工开启这两个值会被启动检查直接拦截;
  2. 重启业务容器生效(运行时配置只需重启,无需重建镜像,见面板配置 - 生效方式);
  3. 确认启动后界面不再出现任何沙箱入口(沙箱产品被自动重置为生产,详见支付能力 - 产品环境)。

DEV 模式不能用于生产

开发超管账号(固定弱口令)在 DEV 模式下可登录运营端、沙箱产品可见。对外网开放的部署不能停留在 DEV 模式。

源码部署对应为启动参数 --spring.profiles.active=prod,效果一致。

域名验证文件的网关侧预留 ​

微信/支付宝的域名归属验证会在域名根路径与 /m/、/cm/、/am/ 目录下抓取校验文件(上传入口见支付能力 - 域名验证):

  • 一键部署:H5 镜像内已内嵌 nginx 反代规则,自动把校验文件请求转发到后端应答;存量部署需升级面板并重建 H5 容器后生效;
  • 静态部署:须自行在 nginx 中为校验文件路径配置反代(正则 location,且必须排在 SPA 兜底 try_files 之前),配置示例见项目构建 - 静态部署,漏配的后果是通道/平台侧域名校验始终不通过。

本阶段核对清单 ​

  • [ ] 五个必绑域名规划完毕且已备案,与端点配置一一对应
  • [ ] HTTPS 全站生效(付款人页面与 API 域名必须)
  • [ ] 中间件三件套全部强口令,端口未映射公网
  • [ ] 生产环境变量齐备(必填项无一缺失),业务密钥未重新生成
  • [ ] 网关对外接口核对完毕:/unipay、/unipay/callback、/app-* 保持开启,/epay 按需开启
  • [ ] 小程序/APP 接入路线已确定(默认经后端 API 域名;需隔离时绑定移动端 API 域名并在构建时填入)
  • [ ] DEPLOY_MODE=PROD 已切换并重启,沙箱与超管确认关闭
  • [ ] 校验文件反代路径已预留

下一阶段:平台初始化配置。