Appearance
各后端服务环境变量配置说明
通用变量
后续服务说明里将不再描述数据库连、rabbitmq、redis服务连接配置变量 FOA5_NACOS_SERVER 由各服务自行定义,如无特殊情况说明,请不要配置
FOA5_DATASOURCE_DRIVER 数据库驱动 例子:com.aliyun.polardb.Driver
FOA5_DATASOURCE_URL 数据库连接地址 例子:jdbc:polardb://foa5dev.rwlb.polardb-pg-public.rds.aliyuncs.com:1521/foa5?currentSchema=public&stringtype=unspecified
FOA5_DATASOURCE_USERNAME 数据库连接账号
FOA5_DATASOURCE_PASSWORD 数据库连接密码
FOA5_DATASOURCE_DBTYPE 数据库类型 默认值:postgresql
FOA5_RABBITMQ_HOST rabbitmq服务地址 默认:rabbitmq(rabbitmq容器名)
FOA5_RABBITMQ_PORT rabbitmq服务端口 默认:5672
FOA5_RABBITMQ_USERNAME rabbitmq服务用户名
FOA5_RABBITMQ_PASSWORD rabbitmq服务密码
FOA5_REDIS_HOST redis服务地址 默认:redis(redis容器名)
FOA5_REDIS_PORT redis服务端口 默认:6379
FOA5_REDIS_PWD redis服务密码 默认:(空,5.10.21新增)
FOA5_REDIS_DATABASE redis服务库 默认:10
FOA5_NACOS_SERVER_ADDR nacos服务地址 默认nacos(nacos容器名)
FOA5_NACOS_SERVER 注册进nacos的服务名 各服务自行定义,不同服务服务名不能重名
FOA5_NACOS_USERNAME 连接nacos服务账号 默认:nacos (mas5.12.x开始支持)
FOA5_NACOS_PASSWORD 连接nacos服务密码 默认:nacos(mas5.12.x开始支持)
FOA5_GATEWAY_TIMEOUT 服务连接超时 默认15000 (单位毫秒)
mas平台
mas平台核心需要部署的后台服务有:mas-gateway、mas-auth、mas-admin、mas-file
- mas-gateway 网关服务
环境变量 | 描述 | 默认值 |
---|---|---|
FOA5_NACOS_SERVER | 服务名 | mas-gateway |
FOA5_WPS_WHITELIST | wps预览服务处理文件白名单 (5.11.23开始合并进FOA5_AUTH_WHITELIST,且采用白名单管理工具进行实时维护,该参数废除) | /mas-file/v2/3rd/, /mas-file/v1/3rd/, /mas-file/wps/attach/downFile, /mas-file/wps/gz/downFile, /mas-wps/v2/3rd/, /mas-wps/v1/3rd/, /mas-wps/download/attach, /mas-wps/download/gz |
FOA5_AUTH_WHITELIST | mas平台服务白名单地址 (5.11.23开始采用白名单管理工具进行实时维护) | /mas-auth/oauth/token, /mas-admin/platform/tenant-info/getConfig, /mas-file/oss/download, /mas-file/oss/callback, /foa-odoc/doc/compensation/**, /actuator/health, /jzclbds/auth/get/token, /locas-service/resource/file/download, /mas-wps/wps/edit/url/common,/foa-docrs/unit/getHytzFeedBack |
URL_WHITELIST | 文件流处理接口白名单 (5.10.45开始废除) | /file/, /export |
spring.codec.max-in-memory-size | spring框架控制的请求数据缓存量,当页面出现:Exceeded limit on max bytes to buffer : 262144报错时,需要配置该参数并调大该参数值 | 262144 |
spring.cloud.gateway.httpclient.response-timeout | spring cloud框架内置配置,当出现:org.springframework.cloud.gateway.support.TimeoutException: Response took longer than timeout: PT20S 报错时,配置该参数并调大该参数值 (单位ms)例如设置响应超时为1分钟:spring.cloud.gateway.httpclient.response-timeout: 60S | PT20S 【spring.cloud.gateway.httpclient.response-timeout必须以java.time.Duration形式指定】 1分钟可以用: PT60S 或 PT1M |
AUTH_USER_INTROSPECTION_URI | 解决垂直越权(mas5.10.51新增),需连接mas-admin服务 | http://mas-admin/platform/admin-role-info/getAllRolesAndPowerByAccountId |
AUTH_PATH_INTROSPECTION_URI | 解决垂直越权(mas5.10.51新增) ,需连接mas-admin服务 | http://mas-admin/request-auth/list |
GATEWAY_TIMEOUT | 超时(mas5.13新增)单位秒 | 20 |
FBP_SESSION_CHECK_URL | 登录认证调整为fbp会话模式(mas5.13新增),连向locas-fbp服务的会话检查接口: /app/boot/1.0.0/sessionIdCheck | http://fbp/app/boot/1.0.0/sessionIdCheck |
FBP_APIACM_URL | 解决垂直越权(mas5.14新增) ,需连接locas-fbp服务的获取白名单接口:/app/boot/1.1.0/loadApiAcmList | http://fbp/app/boot/1.1.0/loadApiAcmList |
注意
- mas-gateway 会请求mas-auth服务进行认证,容器部署时mas-auth服务的容器名必须为:mas-auth 如果因部署环境原因导致不能将容器名部署为mas-auth时,可以添加参数:spring.security.oauth2.resourceserver.jwt.jwk-set-uri来解决,如:spring.security.oauth2.resourceserver.jwt.jwk-set-uri 值:http://test-mas-auth/rsa/publicKey
- mas-auth 认证服务,提供各种方式的认证服务 【5.13开始废弃】
环境变量 | 描述 | 默认值 |
---|---|---|
FOA5_NACOS_SERVER | 服务名 | mash-auth |
FOA5_DINGTALK_GATEWAY | 浙政钉网关服务 | http://dingtalk |
USER_DEFAULT_PASSWORD | 系统初始密码,用于检测长期未修改默认密码 | 123456,Czdn_123 |
YITIHUA_DATASOURCE_DRIVER | 连接一体化系统的数据库驱动 | |
YITIHUA_DATASOURCE_URL | 连接一体化系统的数据库url | |
YITIHUA_DATASOURCE_USERNAME | 连接一体化系统的数据库用户名 | |
YITIHUA_DATASOURCE_PASSWORD | 连接一体化系统的数据库密码 | |
PLAT_PASSWORD_ENCRYPTION_ALGORITHM | mas5.10版本新增,用于更换平台账号密码的加密算法 bcrypt、sm3 | bcrypt |
PLAT_PASSWORD_ENCRYPTION_SALT | mas5.10版本新增,当参数:PLAT_PASSWORD_ENCRYPTION_ALGORITHM(加密算法)值为sm3时,设置盐值加大密码安全度 | (请联系公司研发部) |
CAPTCHA_OPEN_PASSWORD | mas5.10版本新增,用于是否开启账号密码登录多因子认证(账号+密码+动态码) | false |
CAPTCHA_OPEN_SCAN | mas5.10版本新增,用于是否开启扫码登录多因子认证 (动态码+扫码) | false |
PLAT_PASSWORD_ERROR_LIMIT | mas5.10.19版本新增,用户密码输入错误允许次数 | 5 (单位:次) |
PLAT_PASSWORD_ERROR_LOCK | mas5.10.19版本新增,用户密码输入错误超限制次数后锁定账号时间 | 10 (单位:分钟) |
PLAT_PASSWORD_CHANGE_CYCLE | mas5.10.19版本新增, 控制密码多久后提醒用户修改密码 | 90 (单位:天) |
注意
容器部署时容器名需指定为mas-auth,如果变更需要调整mas-gateway、mas-open-gateway中的配置
mas5.10新增参数:PLAT_PASSWORD_ENCRYPTION_ALGORITHM、PLAT_PASSWORD_ENCRYPTION_SALT,请勿在平台使用中途进行更换,且配置值应与mas-admin服务里该值一致
- mas-admin mas平台管理服务、运转服务【5.14开始废弃】
环境变量 | 描述 | 默认值 | ||||
---|---|---|---|---|---|---|
FOA5_NACOS_SERVER | 服务名 | mas-admin | ||||
FOA5_DEFAULT_PASSWORD | 新建账号时初始化密码 | (请联系公司研发部) | ||||
FOA5_APP_INSTALL_PATH | 应用上架时在容器中的存储路径,应用挂载时mas-admin服务将apps挂载出来,mas(nginx)里将该目录挂载进nginx代理apps的目录里 | /usr/local/foa5/apps | ||||
FOA5_APP_UPLOADOSS | 上架app时是否传输到oss | false | ||||
PLAT_OSS_ROOT_DIR | 上架app存储到oss时,指定存储桶下的一个根目录,用于在一个oss桶下搭建多套环境,列如: test 上架的应用将会在oss桶的test/apps下,对应mas的nginx配置的oss授权要指定rootDir,代理要也要加到设置的目录 | 空(直接将上架的应用存储在oss桶下的apps里) | ||||
PLAT_PASSWORD_ENCRYPTION_ALGORITHM | mas5.10版本新增,用于更换平台账号密码的加密算法 bcrypt、sm3 | bcrypt | ||||
PLAT_PASSWORD_ENCRYPTION_SALT | mas5.10版本新增,当参数:PLAT_PASSWORD_ENCRYPTION_ALGORITHM(加密算法)值为sm3时,设置盐值加大密码安全度 | (请联系公司研发部) | ||||
PLAT_SM4DATAENCODE_ENABLED | mas5.10版本新增,用于开启对敏感字段加密(手机号)true 开启密文存储、false 原文存储 | false | ||||
PLAT_SM4DATAENCODE_KEY | mas5.10版本新增,对敏感字段加密的密钥key | (请联系公司研发部) | ||||
PLAT_SM4DATAENCODE_IV | mas5.10版本新增,对敏感字段加密的密钥IV | (请联系公司研发部) | ||||
PLAT_MNG_BY_THREE_POWER | 是否开启三权分立管理模式(5.10.19新增) | false (true:开启三权分立管理模式,false:mas平台默认管理模式) | FOA5_DEFAULT_PASSWORD | 新增账号默认密码 | false (true:开启三权分立管理模式,false:mas平台默认管理模式) | |
PLAT_PASSWORD_CHECK_RULE | 密码复杂度校验规则(5.10.19新增) | ^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&]+$)[a-zA-Z\d!@#$%^&]{8,}$ (字母开头;字母、数字、特殊字符至少2种;密码长度至少8位) | ||||
PLAT_PASSWORD_CHECK_MSG | 密码复杂度校验失败提醒信息(5.10.24新增) | 密码须包含字母、数字、特殊字符!@#$%^&*且至少8位 | ||||
PLAT_PASSWORD_CHECK_COMPLEXITY | 密码强度(5.10.19新增,暂未使用) | 0.75 (意思为:8位长度的密码最少要有两处不相同 ) | ||||
FBP_LOCAL_INSTALL_PATH | FBP服务目录(5.12.x新增,5.13废弃) | /opt/fbp | ||||
FBP_APP_UPLOADOSS | 是否FBP应用上传oss(5.12.x新增,5.13废弃) | false | ||||
FBP_OSS_ROOT_DIR | FBP应用安装根目录(5.12.x新增5.13废弃) | 空 |
注意
FOA5_APP_UPLOADOSS决定应用上架是否存储到oss存储系统,某些版本的容器不能识别true/false值,可以用1/0来替代,如果设置为true,需要在mas-file服务里配置oss服务连接信息, 且需要在管理站点参数管理里添加file.type参数,值为:oss
PLAT_OSS_ROOT_DIR仅在应用上架到oss时有效,通常不需要设置,应用上架oss时会存储在oss存储桶的apps下,只有在一个存储桶的情况下同时部署多个mas平台时需要设定以便应用数据隔离
mas5.10新增的涉密安全配置请勿在平台使用中途调整,参数:PLAT_PASSWORD_ENCRYPTION_ALGORITHM、PLAT_PASSWORD_ENCRYPTION_SALT,配置值应与mas-auth服务里该值一致
PLAT_SM4DATAENCODE_KEY、PLAT_SM4DATAENCODE_IV值成对的,可联系公司研发获取
FBP_LOCAL_INSTALL_PATH、FBP_APP_UPLOADOSS、FBP_OSS_ROOT_DIR 三参数配置跟fbp服务的部署存储方式和fbp参数有关【5.13开始废弃,微服务部署时只需要将fbp服务里指向平台应用目录apps下】
本地部署时:
fbp服务上storege.type值设置为local,需要将容器内路径/Mas-FBP-Server/data挂载出来,例如: - /data/softs/fbp/data:/Mas-FBP-Server/data
mas-admin里FBP_APP_UPLOADOSS设置为false,同时需要将FBP_LOCAL_INSTALL_PATH设置的路径挂载出来,且是fbp挂载出来的目录下的apps目录,例如:- /data/softs/fbp/data/apps:/opt/fbp
oss部署时:
fbp服务上storege.type值设置为oss,oss.root.dir值应在mas-admin里FBP_OSS_ROOT_DIR的值的基础上拼接fbp 如:mas-admin里FBP_OSS_ROOT_DIR的值mas512,fbp上oss.root.dir的值应为:mas512/fbp
- mas-file 文件管理服务
环境变量 | 描述 | 默认值 | 备注 |
---|---|---|---|
FOA5_NACOS_SERVER | 服务名 | mas-file | |
FOA5_BASE_PATH | 使用本地存储时,文件存放的根目录 | /usr/local/foa5/file | 参数管理里file.type值类决定是本地存储还是oss存储,默认oss存储 |
FOA5_OSS_ENDPOINT | oss服务endpoint | oss-cn-hangzhou.aliyuncs.com | |
FOA5_OSS_ACCESSID | oss服务accessId | (请联系公司研发部) | |
FOA5_OSS_ACCESSKEY | oss服务accessKey | (请联系公司研发部) | |
FOA5_OSS_BUCKET | oss服务bucket | foa5-oss | |
FOA5_OSS_DEFAULTDIR | oss存储时,根目录 | 里面存储的文件按租户code隔离 | |
FOA5_OSS_CALLBACKURL | oss上传时需要调用该地址将文件数据记录写入平台 | http://domain:port/mas-file/oss/callback |
注意
- FOA5_OSS_DEFAULTDIR 仅决定业务文件数据存储根位置,mas平台应用上架文件、资源文件不受此配置影响
- mas-wps wps中台预览服务
环境变量 | 描述 | 默认值 | 备注 |
---|---|---|---|
FOA5_NACOS_SERVER | 服务名 | mas-wps | |
FOA5_WPS_DOMAIN | wps中台服务地址 | ||
FOA5_WPS_APPID | wps中台ak | ||
FOA5_WPS_APPSECRET | wps中台sk | ||
FOA5_WPS_URL | wps回调地址,wps原来服务需要从调用方下载文件,对应为文件服务的下载服务地址 | ||
PLAT_ENV_CODE | 解决一个wsp中台能支持多个环境的预览 | 空 | 5.9.14开始支持 |
注意
- 5.11优化了mas-wps预览服务,无需在数据库file_preview_record里配置记录
- 一个wps中台只能配置一个回调地址,为了解决一个wps中台能为多个平台环境提供预览编辑服务,且数据不影响,需要增加一个代理来根据PLAT_ENV_CODE的值将请求转到对应的平台环境上 解决方案点击进入
- mas-sso 单点登录集成服务,支持数据中台、easyv、第三方系统token、jwt单点登录
环境变量 | 描述 | 默认值 | 备注 |
---|---|---|---|
FOA5_NACOS_SERVER | 服务名 | mas-sso | |
DATA_ZT_ID | 杭州数据中台账号ID | CZDN_FOA | |
DATA_ZT_KEY | 杭州数据中台账号KEY | (请联系公司研发部) | |
DATA_ZT_TOKEN_URL | 杭州数据中台认证服务地址 | http://59.202.51.13/mbp1.0/extend/auth/verify | |
DATA_ZT_PROXY_URL | 杭州数据中台数据请求转发接口地址 | http://59.202.51.13/mbp1.0/extend/auth/verify | |
DATA_ZT_TOKEN_VALIDMIN | 杭州数据中台数据认证token有效时长(单位:分钟) | 20 | |
EASYV_TOKEN_VALIDLEN | easyv认证token有效时长 (单位:分钟) | 10 | |
EASYV_TOKEN_LIMIT | easyv认证token有效使用次数 | 10 |
注意
- 5.10.13 开始支持FOA用户库账号映射,部署时需执行该模块的建表语句(从对应版本的初始化安装ext-moudles目录下获取mas-sso.sql)
- mas-mq 平台消息服务【5.13开发废弃,采用fbp提供websocket服务支持,具体见5.13发布文档】
环境变量 | 描述 | 默认值 | 备注 |
---|---|---|---|
FOA5_NACOS_SERVER | 服务名 | mas-mq | |
MQ_BASIC_EXCHANGE | 简单消息交换key | dev.mq.exchange | |
MQ_BASIC_QUEUE | 简单消息队列key | dev.mq.queue | |
MQ_BASIC_ROUTEKEY | 简单消息路由key | basic.mq.routeKey.* | |
MQ_NODE_EXCHANGE | 消息交换key | devnode.mq.exchange | |
MQ_NODE_QUEUE | 消息队列key | devnode.mq.queue | |
MQ_NODE_ROUTEKEY | 消息路由key | node.mq.routeKey |
注意
- 无特殊情况,建议采用默认值
- mas-task 平台定时任务
环境变量 | 描述 | 默认值 | 备注 |
---|---|---|---|
FOA5_NACOS_SERVER | 服务名 | mas-task | |
JOB-LOCAS-SERVICE-URL | 低代码服务地址 | http://locas-service | 用于低代码开发定时业务时,定时任务里反向触发低代码开发的服务 |
- mas-open-gateway mas平台第三方接入api网关服务
环境变量 | 描述 | 默认值 |
---|---|---|
FOA5_NACOS_SERVER | 服务名 | mas-open-gateway |
注意
mas-open-gateway 依赖mas-auth服务,容器部署时mas-auth服务的容器名必须为:mas-auth 如果因部署环境原因导致不能将容器名部署为mas-auth时,可以添加参数:spring.security.oauth2.resourceserver.jwt.jwk-set-uri来解决,如:spring.security.oauth2.resourceserver.jwt.jwk-set-uri 值:http://test-mas-auth/rsa/publicKey
需上架lc-thirdapimng【mas5.10发布该应用】应用对接入方、接入接口管理;
mas-nginx的配置里需加代理
js
location /open-api/ {
proxy_pass http://mas-open-gateway/;
}
locas平台
- locas-service locas平台服务引擎
环境变量 | 描述 | 默认值 | 备注 |
---|---|---|---|
FOA5_NACOS_SERVER | 服务名 | locas-service | |
FOA5_RES_STORE_TYPE | locas平台项目空间资源存储类型 oss:oss存储 local本地磁盘存储 | oss | |
FOA5_RES_OSS_ENDPOINT | 资源文件oss存储时,oss服务地址 | oss-cn-hangzhou.aliyuncs.com | |
FOA5_RES_OSS_ACCESSID | 资源文件oss存储时,oss服务id | (请联系公司研发部) | |
FOA5_RES_OSS_ACCESSKEY | 资源文件oss存储时,oss服务密钥 | (请联系公司研发部) | |
FOA5_OSS_BUCKET | 资源文件oss存储时,oss存储桶 | foa5-oss | 参数管理里file.type值类决定是本地存储还是oss存储,默认oss存储 |
PLAT_OSS_ROOT_DIR | 资源文件oss存储时,oss存储桶下的根目录,默认空,当指定了根目录时,对应mas(nginx)里对资源目录的代理地址需要加根目录;oss签名文件里需要设置rootDir的值为此处配的根 | 空 | |
FOA5_RES_LOCAL_ROOT_DIR | 资源文件本地存储时,文件存储根目录,容器部署时注意挂载出来,否则重启或升级服务时将丢失之前操作的文件 | /opt/repo |
- fbp locas平台新的低代码服务引擎
环境变量 | 描述 | 默认值 | 备注 |
---|---|---|---|
profile | fbp服务启动时加载哪个配置文件:dev/docker/prod | ||
nacos.enabled | 是否开启注册进nacos,用于容器部署时 true/false | false | |
nacos.server-addr | nacos服务地址 | ||
nacos.username | 连接nacos时的账号 (nacos服务开启鉴权时需要,locas2.6.x新增) | ||
nacos.password | 连接nacos时的密码(nacos服务开启鉴权时需要,locas2.6.x新增) | ||
db.driver-class-name | 数据库驱动 | ||
db.url | 数据库服务url | ||
db.username | 数据库连接用户名 | ||
db.password | 数据库连接密码 | ||
oss.domain | 资源文件oss存储时,oss服务地址 | oss-cn-hangzhou.aliyuncs.com | |
storege.type | 存储类型:local 、oss | local | |
oss.id | 资源文件oss存储时,oss服务id | (请联系公司研发部) | |
oss.key | 资源文件oss存储时,oss服务密钥 | (请联系公司研发部) | |
oss.bucket | 资源文件oss存储时,oss存储桶 | foa5-oss | 参数管理里file.type值类决定是本地存储还是oss存储,默认oss存储 |
oss.root.dir | 资源文件oss存储时,oss存储桶下的根目录,默认空,当指定了根目录时,对应mas(nginx)里对资源目录的代理地址需要加根目录;oss签名文件里需要设置rootDir的值为此处配的根 | 空 | |
redis.host | 2.8.x新增 redis服务地址 | ||
redis.port | 2.8.x新增 redis服务端口 | ||
redis.password | 2.8.x新增 redis服务密码 | ||
redis.database | 2.8.x新增 redis服务库 | 0 | |
redis.expireSeconds | 2.8.x新增 redis服务缓存失效时长 (单位秒) | 240000 | |
JVM_XMS | 2.7.48后新增 fbp服务内存设置(初始内存) | -Xms256M | |
JVM_XMX | 2.7.48后新增 fbp服务内存设置(最大内存) | -Xms256M | |
JVM_XSS | 2.7.48后新增 fbp服务内存设置 (单个线程堆栈大小) | -Xms512k | |
server.thread.pool.size | 2.7.54后新增 fbp服务线程池大小 | 100 | |
redis.host | 2.7.57后新增 redis服务地址【注意:fbp服务多实例部署应配置redis连接信息,且实例上的连接信息一致;微服务场景下还要与mas-admin、mas-gateway一致】 | ||
redis.port | 2.7.57后新增 redis服务端口 | ||
redis.password | 2.7.57后新增 redis服务密码 | ||
redis.database | 2.7.57后新增 redis服务库 | ||
redis.expireSeconds | 2.7.57后新增 redis服务有效时长(单位秒) |
fbp服务的部署存储方式和mas-admin里FBP_LOCAL_INSTALL_PATH、FBP_APP_UPLOADOSS、FBP_OSS_ROOT_DIR 三参数配置有关
本地部署时:
fbp服务上storege.type值设置为local,需要将容器内路径/Mas-FBP-Server/data挂载出来,例如: - /data/softs/fbp/data:/Mas-FBP-Server/data
mas-admin里FBP_APP_UPLOADOSS设置为false,同时需要将FBP_LOCAL_INSTALL_PATH设置的路径挂载出来,且是fbp挂载出来的目录下的apps目录,例如:- /data/softs/fbp/data/apps:/opt/fbp
oss部署时:
fbp服务上storege.type值设置为oss,oss.root.dir值应在mas-admin里FBP_OSS_ROOT_DIR的值的基础上拼接fbp 如:mas-admin里FBP_OSS_ROOT_DIR的值mas512,fbp上oss.root.dir的值应为:mas512/fbp
前端服务说明
需要部署前台镜像 mas-nginx: mas服务主要提供平台前端代码和nginx代理服务 在容器部署时通过命令启动对应环境的配置:command: "nginx -c /etc/nginx/conf/nginx-sczt-test.conf -g 'daemon off;'"
- 平台默认提供如下场景的配置
nginx-23.conf 公司23云环境
nginx-119.conf 公司119云环境
nginx-aly.conf
nginx-edas.conf edas生产环境
nginx-sczt-test.conf edas测试环境
nginx-szjd.conf 信创云环境
- mas-nginx 5.10.x开始支持导入指定路径中的自定义配置
json
include /etc/nginx/conf/conf.d/*.conf;
部署mas-nginx后,如果还需定义自己的服务配置,只需要将容器的/etc/nginx/conf/conf.d目录挂载出来,将配置文件放进该挂载目录内
注意
- 自定义的配置文件后缀必须为:.conf
- 自定义的配置文件内只需写 server配置
- 要使自定义配置生效可以重启mas-nginx容器,或者进入mas-nginx容器内执行 ./nginx -s reload
- 更多灵活配置采用挂载方式
- 通常本地存储时需要将各服务里的应用、资源、文件挂载出来,挂载要注意将mas服务与mas-admin、locas-service服务里应用、资源存储对应,mas-admin、locas-service里将应用、资源文件挂载出来,mas再将文件挂载进nginx
应用、资源部署oss存储时,需要调整njs下oss-sign.js认证中的账号信息,nginx.conf里需要将njs/oss-sign.js文件引入:
jsonossAccess:{ accessKeyId:‘xxx’, oss存储服务账号id (跟mas-file、locas-service里配置oss存储账号一致) accessKeySecret: ‘yyyy’, oss存储服务账号密钥 (跟mas-file、locas-service里配置oss存储账号一致) bucket:‘zzzz’, oss存储桶 (跟mas-file、locas-service里配置oss存储桶) rootDir:‘’ oss存储桶下设置存储根目录 (跟mas-admin、locas-service里PLAT_OSS_ROOT_DIR配置一致) }
- oss-sign.js
js
/*
创建待签名字符串
此方法为简化版,仅处理不带url参数的oss资源地址,其他情况可结合oss文档 + ali-oss sdk 文件内signUtil模块内的buildCanonicalString方法做修改
*/
function buildCanonicalString (method, resourcePath, date) {
var signContent = [method.toUpperCase(), '', '', date, resourcePath]
return signContent.join('\n')
}
/* 计算签名字符串 */
function computeSignature (accessKeySecret, canonicalString) {
var signature = require('crypto').createHmac('sha1', accessKeySecret)
return signature.update(canonicalString.toUTF8()).digest('base64')
}
/* 生成完整认证字符串 */
function authorization (accessKeyId, accessKeySecret, canonicalString) {
return 'OSS ' + accessKeyId + ':' + computeSignature(accessKeySecret, canonicalString)
}
/* oss签名配置数据,换成你自己的PAM账号的AK和bucket */
var ossAccess = {
accessKeyId: 'xxxxxxxxxxxxxxxxxxx',
accessKeySecret: 'yyyyyyyyyyyyyyyyy',
bucket: 'foa5-oss',
rootDir: 'test'
}
var GMTdate = '';
/* 返回oss header date字符串 */
function getGMTtime (r) {
var dateWords = new Date().toUTCString().split(' ')
dateWords[0] += ','
dateWords[1] = [dateWords[2], dateWords[2] = dateWords[1]][0]
GMTdate = dateWords.join(' ')
r.log(GMTdate)
return GMTdate
}
/* 返回oss header authorization字符串 */
function ossSign (r) {
var method = r.method
var path = '/' + ossAccess.bucket
if(ossAccess.rootDir== ''){
path = path + r.rui
}else{
path = path + '/' + ossAccess.rootDir + r.uri
}
var canonicalString = buildCanonicalString(method, path, GMTdate)
var result = authorization(ossAccess.accessKeyId, ossAccess.accessKeySecret, canonicalString)
r.log(result)
return result
}
- nginx 关键配置说明
oss存储应用和资源或者代理oss存储里的文件时,需要引入oss-sign.js 例如: js_include njs/oss-sign-sczt-test.js;并对相应的资源进行代理
jsonlocation /apps/ { proxy_pass https://xxxxx.cn/test/apps/; proxy_set_header Date $ossDate; proxy_set_header Authorization $ossAuth; } location /resources/ { proxy_pass https://xxxxx.cn/test/resources/; proxy_set_header Date $ossDate; proxy_set_header Authorization $ossAuth; }
client_max_body_size 指定文件上传限制,不配置会取nginx默认值,很小,影响业务;例如: client_max_body_size 500M;
前端代码存放位置:/usr/share/nginx/html
jsonlocation / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; }
- nginx.conf
json
##代码块中的events、http、server、location、upstream等都是块配置项##
##块配置项可以嵌套。内层块直接继承外层快,例如:server块里的任意配置都是基于http块里的已有配置的##
##Nginx worker进程运行的用户及用户组
#语法:user username[groupname] 默认:user nobody nobody
#user用于设置master进程启动后,fork出的worker进程运行在那个用户和用户组下。当按照"user username;"设置时,用户组名与用户名相同。
#若用户在configure命令执行时,使用了参数--user=usergroup 和 --group=groupname,此时nginx.conf将使用参数中指定的用户和用户组。
user nginx;
##Nginx worker进程个数:其数量直接影响性能。
#每个worker进程都是单线程的进程,他们会调用各个模块以实现多种多样的功能。如果这些模块不会出现阻塞式的调用,那么,有多少CPU内核就应该配置多少个进程,反之,有可能出现阻塞式调用,那么,需要配置稍多一些的worker进程。
worker_processes auto;
##ssl硬件加速。
#用户可以用OpneSSL提供的命令来查看是否有ssl硬件加速设备:openssl engine -t
#ssl_engine device;
##守护进程(daemon)。是脱离终端在后台允许的进程。它脱离终端是为了避免进程执行过程中的信息在任何终端上显示。这样一来,进程也不会被任何终端所产生的信息所打断。##
##关闭守护进程的模式,之所以提供这种模式,是为了放便跟踪调试nginx,毕竟用gdb调试进程时最繁琐的就是如何继续跟进fork出的子进程了。##
##如果用off关闭了master_proccess方式,就不会fork出worker子进程来处理请求,而是用master进程自身来处理请求
#daemon off; #查看是否以守护进程的方式运行Nginx 默认是on
#master_process off; #是否以master/worker方式工作 默认是on
##error日志的设置#
#语法: error_log /path/file level;
#默认: error_log / log/error.log error;
#当path/file 的值为 /dev/null时,这样就不会输出任何日志了,这也是关闭error日志的唯一手段;
#leve的取值范围是debug、info、notice、warn、error、crit、alert、emerg从左至右级别依次增大。
#当level的级别为error时,error、crit、alert、emerg级别的日志就都会输出。大于等于该级别会输出,小于该级别的不会输出。
#如果设定的日志级别是debug,则会输出所有的日志,这一数据量会很大,需要预先确保/path/file所在的磁盘有足够的磁盘空间。级别设定到debug,必须在configure时加入 --with-debug配置项。
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log /var/log/nginx/error.log warn;
##pid文件(master进程ID的pid文件存放路径)的路径
pid /var/run/nginx.pid;
worker_rlimit_nofile 65535;
load_module modules/ngx_http_js_module.so;
events {
#仅对指定的客户端输出debug级别的日志: 语法:debug_connection[IP|CIDR]
#这个设置项实际上属于事件类配置,因此必须放在events{……}中才会生效。它的值可以是IP地址或者是CIRD地址。
#debug_connection 10.224.66.14; #或是debug_connection 10.224.57.0/24
#这样,仅仅以上IP地址的请求才会输出debug级别的日志,其他请求仍然沿用error_log中配置的日志级别。
#注意:在使用debug_connection前,需确保在执行configure时已经加入了--with-debug参数,否则不会生效。
worker_connections 102400;
accept_mutex on;
multi_accept on;
use epoll;
}
##核心转储(coredump):在Linux系统中,当进程发生错误或收到信号而终止时,系统会将进程执行时的内存内容(核心映像)写入一个文件(core文件),以作为调试只用,这就是所谓的核心转储(coredump).
http {
# js_include指令后接脚本文件路径
js_include njs/oss-sign-sczt-test.js;
# 定义签名字符串和GMT时间字符串
js_set $ossDate getGMTtime;
js_set $ossAuth ossSign;
##嵌入其他配置文件 语法:include /path/file
#参数既可以是绝对路径也可以是相对路径(相对于Nginx的配置目录,即nginx.conf所在的目录)
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
server_tokens off; #隐藏ngxin版本号
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on; #开启gzip压缩功能
gzip_min_length 10k; #设置允许压缩的页面最小字节数; 这里表示如果文件小于10个字节,就不用压缩,因为没有意义,本来就很小.
gzip_buffers 4 16k; #设置压缩缓冲区大小,此处设置为4个16K内存作为压缩结果流缓存
gzip_http_version 1.1; #压缩版本
gzip_comp_level 2; #设置压缩比率,最小为1,处理速度快,传输速度慢;9为最大压缩比,处理速度慢,传输速度快;
gzip_types text/css text/xml application/javascript; #制定压缩的类型,线上配置时尽可能配置多的压缩类型!
gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip_vary on; #选择支持vary header;改选项可以让前端的缓存服务器缓存经过gzip压缩的页面; 这个可以不写,表示在传送数据时,给客户端说明我使用了gzip压缩
add_header X-Frame-Options ALLOWALL;
server {
##listen监听的端口
#语法:listen address:port [ default(deprecated in 0.8.21) | default_server | [ backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind | ssl ] ]
#default_server: 如果没有设置这个参数,那么将会以在nginx.conf中找到的第一个server块作为默认server块
listen 80;
#主机名称:其后可以跟多个主机名称,开始处理一个HTTP请求时,nginx会取出header头中的Host,与每个server中的server_name进行匹配,以此决定到底由那一个server来处理这个请求。有可能一个Host与多个server块中的server_name都匹配,这时会根据匹配优先级来选择实际处理的server块。server_name与Host的匹配优先级见文末。
server_name localhost;
client_max_body_size 500M;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /apps/ {
proxy_pass https://xxxxx.cn/test/apps/;
# 设置反向代理时请求header, 也是本方案核心内容
# $ossDate, $ossAuth 变量名需和nginx.conf文件内变量名一致
proxy_set_header Date $ossDate;
proxy_set_header Authorization $ossAuth;
}
location /resources/ {
proxy_pass https://xxxxx.cn/test/resources/;
proxy_set_header Date $ossDate;
proxy_set_header Authorization $ossAuth;
}
location /czdn/ {
proxy_pass https://xxxxx.cn/czdn/;
# 设置反向代理时请求header, 也是本方案核心内容
# $ossDate, $ossAuth 变量名需和nginx.conf文件内变量名一致
proxy_set_header Date $ossDate;
proxy_set_header Authorization $ossAuth;
}
location /ws {
proxy_pass http://rabbitmq:15674;
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection upgrade;
}
# 适配老服务
location /api/admin {
rewrite ^/api/admin(.*)$ /api/mas-admin$1 last;
}
location /api/auth {
rewrite ^/api/auth(.*)$ /api/mas-auth$1 last;
}
location /api/file {
rewrite ^/api/file(.*)$ /api/mas-file$1 last;
}
location /api/mq {
rewrite ^/api/mq(.*)$ /api/mas-mq$1 last;
}
location /api/sso {
rewrite ^/api/sso(.*)$ /api/mas-sso$1 last;
}
location /api/task {
rewrite ^/api/task(.*)$ /api/mas-task$1 last;
}
location /api/wps {
rewrite ^/api/wps(.*)$ /api/mas-wps$1 last;
}
location /api/serviceEngine {
rewrite ^/api/serviceEngine(.*)$ /api/locas-service$1 last;
}
location /api/archives {
rewrite ^/api/archives(.*)$ /api/foa-archives$1 last;
}
location /api/config {
rewrite ^/api/config(.*)$ /api/foa-config$1 last;
}
location /api/coremail {
rewrite ^/api/coremail(.*)$ /api/foa-coremail last;
}
location /api/docRegister {
rewrite ^/api/docRegister(.*)$ /api/foa-docrs$1 last;
}
location /api/engine {
rewrite ^/api/engine(.*)$ /api/foa-flow$1 last;
}
location /api/odoc {
rewrite ^/api/odoc(.*)$ /api/foa-odoc$1 last;
}
location /api/user {
rewrite ^/api/user(.*)$ /api/foa-user$1 last;
}
location /api/ {
proxy_pass http://mas-gateway/;
}
# 数据中台
location /remote/ {
#proxy_pass http://xxx.xxx.xxx.xxx/mbp1.0/extend/interface/;
#rewrite ^/remote/$ '' break;
proxy_pass http://mas-gateway/jzclbds/remote/;
}
error_page 404 = @tempdown;
location @tempdown {
rewrite ^(.*)$ /index.html break;
}
##location 语法: location [=|~|~*|^~] /uri/ { ... }
# location的使用实例见文末。
#注意:location时有顺序的,当一个请求有可能匹配多个location时,实际上这个请求会被第一个location处理。
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
##listen监听的端口
#语法:listen address:port [ default(deprecated in 0.8.21) | default_server | [ backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind | ssl ] ]
#default_server: 如果没有设置这个参数,那么将会以在nginx.conf中找到的第一个server块作为默认server块
listen 443 ssl;
#主机名称:其后可以跟多个主机名称,开始处理一个HTTP请求时,nginx会取出header头中的Host,与每个server中的server_name进行匹配,以此决定到底由那一个server来处理这个请求。有可能一个Host与多个server块中的server_name都匹配,这时会根据匹配优先级来选择实际处理的server块。server_name与Host的匹配优先级见文末。
server_name localhost;
client_max_body_size 500M;
ssl_certificate /etc/nginx/cret/xxxxx.cn.pem;
ssl_certificate_key /etc/nginx/cret/xxxxx.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /apps/ {
proxy_pass https://xxxx.com/test/apps/;
# 设置反向代理时请求header, 也是本方案核心内容
# $ossDate, $ossAuth 变量名需和nginx.conf文件内变量名一致
proxy_set_header Date $ossDate;
proxy_set_header Authorization $ossAuth;
}
location /resources/ {
proxy_pass https://xxxx.com/test/resources/;
proxy_set_header Date $ossDate;
proxy_set_header Authorization $ossAuth;
}
location /czdn/ {
proxy_pass https://xxx.com/czdn/;
# 设置反向代理时请求header, 也是本方案核心内容
# $ossDate, $ossAuth 变量名需和nginx.conf文件内变量名一致
proxy_set_header Date $ossDate;
proxy_set_header Authorization $ossAuth;
}
location /ws {
proxy_pass http://rabbitmq:15674;
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection upgrade;
}
location /api/ {
proxy_pass http://gateway/;
}
#杭州JZCLBDS接口
location /remote/ {
#proxy_pass http://59.202.51.13/mbp1.0/extend/interface/;
#rewrite ^/remote/$ '' break;
proxy_pass http://gateway/jzclbds/remote/;
}
error_page 404 = @tempdown;
location @tempdown {
rewrite ^(.*)$ /index.html break;
}
##location 语法: location [=|~|~*|^~] /uri/ { ... }
# location的使用实例见文末。
#注意:location时有顺序的,当一个请求有可能匹配多个location时,实际上这个请求会被第一个location处理。
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}