Umi + qiankun 没有单独域名,用二级路径转发

/xman-api 域名二级路径
/xmancloud 主应用路径
/xmancloud/playboxmicro 子应用路径
/xmancloud/commonmicro 子应用路径
/tptplaybox 活动路径

1. nginx 配置

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#主应用
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 传给子应用。

Leave a Reply

Your email address will not be published. Required fields are marked *