Skip to content
本页目录

各后端服务环境变量配置说明

通用变量

后续服务说明里将不再描述数据库连、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_WHITELISTwps预览服务处理文件白名单 (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_WHITELISTmas平台服务白名单地址 (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-sizespring框架控制的请求数据缓存量,当页面出现:Exceeded limit on max bytes to buffer : 262144报错时,需要配置该参数并调大该参数值262144
spring.cloud.gateway.httpclient.response-timeoutspring cloud框架内置配置,当出现:org.springframework.cloud.gateway.support.TimeoutException: Response took longer than timeout: PT20S 报错时,配置该参数并调大该参数值 (单位ms)例如设置响应超时为1分钟:spring.cloud.gateway.httpclient.response-timeout: 60SPT20S 【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/sessionIdCheckhttp://fbp/app/boot/1.0.0/sessionIdCheck
FBP_APIACM_URL解决垂直越权(mas5.14新增) ,需连接locas-fbp服务的获取白名单接口:/app/boot/1.1.0/loadApiAcmListhttp://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_ALGORITHMmas5.10版本新增,用于更换平台账号密码的加密算法 bcrypt、sm3bcrypt
PLAT_PASSWORD_ENCRYPTION_SALTmas5.10版本新增,当参数:PLAT_PASSWORD_ENCRYPTION_ALGORITHM(加密算法)值为sm3时,设置盐值加大密码安全度(请联系公司研发部)
CAPTCHA_OPEN_PASSWORDmas5.10版本新增,用于是否开启账号密码登录多因子认证(账号+密码+动态码)false
CAPTCHA_OPEN_SCANmas5.10版本新增,用于是否开启扫码登录多因子认证 (动态码+扫码)false
PLAT_PASSWORD_ERROR_LIMITmas5.10.19版本新增,用户密码输入错误允许次数5 (单位:次)
PLAT_PASSWORD_ERROR_LOCKmas5.10.19版本新增,用户密码输入错误超限制次数后锁定账号时间10 (单位:分钟)
PLAT_PASSWORD_CHANGE_CYCLEmas5.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时是否传输到ossfalse
PLAT_OSS_ROOT_DIR上架app存储到oss时,指定存储桶下的一个根目录,用于在一个oss桶下搭建多套环境,列如: test 上架的应用将会在oss桶的test/apps下,对应mas的nginx配置的oss授权要指定rootDir,代理要也要加到设置的目录空(直接将上架的应用存储在oss桶下的apps里)
PLAT_PASSWORD_ENCRYPTION_ALGORITHMmas5.10版本新增,用于更换平台账号密码的加密算法 bcrypt、sm3bcrypt
PLAT_PASSWORD_ENCRYPTION_SALTmas5.10版本新增,当参数:PLAT_PASSWORD_ENCRYPTION_ALGORITHM(加密算法)值为sm3时,设置盐值加大密码安全度(请联系公司研发部)
PLAT_SM4DATAENCODE_ENABLEDmas5.10版本新增,用于开启对敏感字段加密(手机号)true 开启密文存储、false 原文存储false
PLAT_SM4DATAENCODE_KEYmas5.10版本新增,对敏感字段加密的密钥key(请联系公司研发部)
PLAT_SM4DATAENCODE_IVmas5.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_PATHFBP服务目录(5.12.x新增,5.13废弃)/opt/fbp
FBP_APP_UPLOADOSS是否FBP应用上传oss(5.12.x新增,5.13废弃)false
FBP_OSS_ROOT_DIRFBP应用安装根目录(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_ENDPOINToss服务endpointoss-cn-hangzhou.aliyuncs.com
FOA5_OSS_ACCESSIDoss服务accessId(请联系公司研发部)
FOA5_OSS_ACCESSKEYoss服务accessKey(请联系公司研发部)
FOA5_OSS_BUCKEToss服务bucketfoa5-oss
FOA5_OSS_DEFAULTDIRoss存储时,根目录里面存储的文件按租户code隔离
FOA5_OSS_CALLBACKURLoss上传时需要调用该地址将文件数据记录写入平台http://domain:port/mas-file/oss/callback

注意

  • FOA5_OSS_DEFAULTDIR 仅决定业务文件数据存储根位置,mas平台应用上架文件、资源文件不受此配置影响
  • mas-wps wps中台预览服务
环境变量描述默认值备注
FOA5_NACOS_SERVER服务名mas-wps
FOA5_WPS_DOMAINwps中台服务地址
FOA5_WPS_APPIDwps中台ak
FOA5_WPS_APPSECRETwps中台sk
FOA5_WPS_URLwps回调地址,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杭州数据中台账号IDCZDN_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_VALIDLENeasyv认证token有效时长 (单位:分钟)10
EASYV_TOKEN_LIMITeasyv认证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简单消息交换keydev.mq.exchange
MQ_BASIC_QUEUE简单消息队列keydev.mq.queue
MQ_BASIC_ROUTEKEY简单消息路由keybasic.mq.routeKey.*
MQ_NODE_EXCHANGE消息交换keydevnode.mq.exchange
MQ_NODE_QUEUE消息队列keydevnode.mq.queue
MQ_NODE_ROUTEKEY消息路由keynode.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_TYPElocas平台项目空间资源存储类型 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平台新的低代码服务引擎
环境变量描述默认值备注
profilefbp服务启动时加载哪个配置文件:dev/docker/prod
nacos.enabled是否开启注册进nacos,用于容器部署时 true/falsefalse
nacos.server-addrnacos服务地址
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 、osslocal
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.host2.8.x新增 redis服务地址
redis.port2.8.x新增 redis服务端口
redis.password2.8.x新增 redis服务密码
redis.database2.8.x新增 redis服务库0
redis.expireSeconds2.8.x新增 redis服务缓存失效时长 (单位秒)240000
JVM_XMS2.7.48后新增 fbp服务内存设置(初始内存)-Xms256M
JVM_XMX2.7.48后新增 fbp服务内存设置(最大内存)-Xms256M
JVM_XSS2.7.48后新增 fbp服务内存设置 (单个线程堆栈大小)-Xms512k
server.thread.pool.size2.7.54后新增 fbp服务线程池大小100
redis.host2.7.57后新增 redis服务地址【注意:fbp服务多实例部署应配置redis连接信息,且实例上的连接信息一致;微服务场景下还要与mas-admin、mas-gateway一致】
redis.port2.7.57后新增 redis服务端口
redis.password2.7.57后新增 redis服务密码
redis.database2.7.57后新增 redis服务库
redis.expireSeconds2.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文件引入:

json
ossAccess:{
  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;并对相应的资源进行代理

json
location /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

json
location / {
		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;
    }
  }


}

内部资料,请勿外传