7

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

 3 years ago
source link: https://xmetal.cc/?p=2138
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

1. nginx 配置

01#主应用
02location /xmancloud {
03try_files $uri $uri/ /xmancloud/index.html;
04if ($request_filename ~* .*\.(?:htm|html)$) {
05add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
06add_header X-Frame-Options ALLOWALL;
07}
08alias /mnt/nasdata/nginx/html/static/xman-cloud/;
09}
10 
11# 子应用
12location /xmancloud/commonmicro/{
13add_header Access-Control-Allow-Origin '*';
14add_header Access-Control-Allow-Credentials 'true';
15add_header Access-Control-Allow-Methods '*';
16add_header Access-Control-Allow-Headers '*';
17if ($request_method = 'OPTIONS') {
18add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
19add_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';
20return 200;
21}
22if ($request_method = 'POST') {
23add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
24add_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';
25}
26if ($request_method = 'GET') {
27add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
28add_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';
29}
30if ($request_filename ~* .*\.(?:htm|html)$) {
31add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
32}
33alias /mnt/nasdata/nginx/html/static/xman-common/;
34index  index.html index.htm;
35#try_files $uri $uri/ /index.html;
36}

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 传给子应用。

Post navigation

Leave a Reply Cancel reply

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

Comment *

Name *

Email *

Website


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK