Web、多域名与静态资源配置

主要文件

digital-platform-server 为例,多域名和 Web 资源相关配置主要涉及:

  • domains.conf
  • domains.mongo.db.conf
  • @install/web/domains/*/application.json

domains.conf

domains.conf 负责描述域名感知和站点转发行为,常见内容包括:

  • 是否启用应用域名能力
  • 主域名或主控域名列表
  • Web 转发开关
  • 是否按域名感知转发
  • 域名包含和排除规则
  • 基于占位符的资源映射

digital 的样例说明,开发态和安装态在域名开关与转发规则上可以明显不同,因此多域名配置不能只看一个环境文件。

@install/web/domains/*

这部分资源属于安装态站点静态资源,而不是开发态运行配置。

digital 里,这里已经包含了:

  • 站点级 application.json
  • 域名品牌化所需的图片资源

这说明“Web 站点品牌差异化”是通过 @install/web 进入安装目录的,而不是通过 @conf 注入。

domains.mongo.db.conf

这个文件把多域名能力进一步扩展到数据层,用于声明:

  • 是否启用按域名分库
  • 默认域名集合
  • 特定域名对应的数据库连接参数

因此,多域名不是单纯的 Web 转发问题,而是可能同时涉及:

  • 域名访问入口
  • 静态站点资源
  • 域名绑定数据库

理解多域名配置时,需要把访问入口、站点静态资源和域名绑定数据源这三类内容一起看。

可复制模板

domains.conf 模板

#######################################
# 应用域设置;
#######################################

# 是否支持应用的多域访问功能;
# 默认为 false ;
galaxyplatform.security.application-domains.enable=true

# 主域列表;由逗点分隔多个主域名;
# 默认为空;
galaxyplatform.security.application-domains.master-momains=localhost,127.0.0.1,app.example.com

# -----------------------------
# 是否启用请求转发;默认为 false;
# 当启用后,只有显式指定的访问路径才会执行URL映射转发;
# -----------------------------
application.web.forward.enable=true

# ----------------------------------------------------------
# 是否支持“域名”重写转发的目标地址;
# 默认为 false;
#
# 通常,当前端请求需要按“域名”转发时,需要设置此配置;
#
# 当此属性启用后,并且,当前也启用了多域名访问,
# 这种情况下,将会对转发的目标路径先按照“域名占位符”进行替换处理,作为最终转发的目标;
# ----------------------------------------------------------
application.web.forward.domain-aware=true

# -----------------------------
# 可执行转发映射的域名规则列表(白名单);
# 支持指定 Ant 通配符;
# -----------------------------
application.web.forward.domains.includes=*.example.com

# -----------------------------
# 不可执行转发映射的域名规则列表(黑名单);
# 支持指定 Ant 通配符;
# -----------------------------
application.web.forward.domains.excludes=localhost,127.0.0.1

# -----------------------------
# 域名占位符;
# 对转发的目标路径先按照“域名占位符”进行替换处理,替换得到新的目标路径,作为转发的目标地址;
# -----------------------------
# application.web.forward.domains.placeholder=%domain%

# -----------------------------
# 基于访问域名的转发映射表;
# 匹配规则为“精确匹配”,key 是请求URI,value 是要转发(forward)的目标地址;
# -----------------------------
application.web.forward.domains.mappings[/application.json]=/domains/%domain%/application.json

domains.mongo.db.conf 模板

#######################################
# 设置按“域名”隔离的 MongoDB 数据库
#######################################

# 是否启用按“域名”进行数据库级别的隔离机制;
# 默认为 false;
application.data.mongodb.domains-enable=true

# --------------------------------
# 配置采用默认数据库的“域”;
#
# “默认数据库”是指通过 spring.data.mongodb 标准配置项设置的数据库;
#
# 可以设定通配符;例如: *.linkgie.com
# --------------------------------
application.data.mongodb.default-domains=localhost,127.0.0.1,app.example.com

# --------------------------------
# 在支持按“域名”进行数据库级别隔离的情况下,当上下文未定义域名时,是否以默认域来处理;
# 默认为 true;
# application.data.mongodb.use-default-on-empty=true
# --------------------------------

# ---------------------------------------------------------
# ----- 示例:为域名 shop.example.com 设置独立的数据库 -------
# ---------------------------------------------------------
application.data.mongodb.domains[shop.example.com].host=127.0.0.1
application.data.mongodb.domains[shop.example.com].port=27017
application.data.mongodb.domains[shop.example.com].database=shopdb
application.data.mongodb.domains[shop.example.com].authentication-database=shopdb
application.data.mongodb.domains[shop.example.com].username=shopUser
application.data.mongodb.domains[shop.example.com].password=changeMe
# 自动创建索引;
application.data.mongodb.domains[shop.example.com].auto-index-creation=true
# 是否启用事务;
application.data.mongodb.domains[shop.example.com].enable-transaction=true
# 复制集名称;
# MongoDB 服务器需要以复制集模式运行才能支持事务;
application.data.mongodb.domains[shop.example.com].replica-set-name=rs0

@install/web/domains/<domain>/application.json 模板

{
  "title": "我的星河应用",
  "subtitle": "请替换为应用副标题",
  "logo": {
    "href": "/logo.png",
    "title": ""
  }
}

相关AI skills

  • galaxy-app-config-web
  • galaxy-app-config-storage
  • galaxy-app-config-publish-layout
最近更新:
发布者: huanghaiquan
扫码咨询