/xman-api 域名二级路径
/xmancloud 主应用路径
/xmancloud/playboxmicro 子应用路径
/xmancloud/commonmicro 子应用路径
/tptplaybox 活动路径
1. nginx 配置
#主应用
location /xmancloud {
try_files $uri $uri/ /xmancloud/index.html;
if ($request_filename ~* .*\.(?:htm|html)$) {
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
add_header X-Frame-Options ALLOWALL;
}
alias /mnt/nasdata/nginx/html/static/xman-cloud/;
}
# 子应用
location /xmancloud/commonmicro/{
add_header Access-Control-Allow-Origin '*';
add_header Access-Control-Allow-Credentials 'true';
add_header Access-Control-Allow-Methods '*';
add_header Access-Control-Allow-Headers '*';
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Pragma,sec-ch-ua,sec-ch-ua-mobile,Authorization,Accept';
return 200;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Pragma,sec-ch-ua,sec-ch-ua-mobile,Authorization,Accept';
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Pragma,sec-ch-ua,sec-ch-ua-mobile,Authorization,Accept';
}
if ($request_filename ~* .*\.(?:htm|html)$) {
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
}
alias /mnt/nasdata/nginx/html/static/xman-common/;
index index.html index.htm;
#try_files $uri $uri/ /index.html;
}
2. 项目配置修改
主 umi 打包配置
- cloud主应用 publicPath 修改为/xmancloud/, 这意味着静态资源引用都会加上 /xmancloud/**.js
- 子应用publicPath 修改为/xmancloud/commonmicro/ 这意味着静态资源引用都会加上 /xmancloud/commonmicro/**
- cloud主应用路由规则设置 base 修改为 /xmancloud, 这样路由中都会加上/xmancloud ,刷新后nginx才会定位到cloud项目
- 子应用的base 是(主应用的base + routes里 子应用的path)注意 “/”不要重复,/xmancloud/common,而且是主应用传递给子应用的,子应用不需要自己配置,子应用配置base也不会生效;可以从子应用的.umi/pluginqiankun/lifecycles.ts 看到 props.base
- 主应用 routes 不需要加xmancloud
注意
- 主应用加base: /xmancloud routes path:’/common’, 如果页面路径是/common/login 也会命中子应用,但子应用收到主应用给的 base 是/xmancloud/common,页面不会展示, 页面路径需要/xmancloud/common/login 才行
- 当主应用的base没有配置或者’/’, 主应用会把 routes 里的path,当作子应用的base 传给子应用。