qiankun 微前端_qiankun 微前端应用实践与部署(二)

下面是两种方案的简要描述。

传统部署

方式

通过配置 nginx 端口到目录的转发。

具体可查看上一篇文章

特点

需要对外开放子应用对应的端口,将编译好的应用文件放到对应的配置目录。

docker 部署

方式

首先构建主应用与子应用的 docker 镜像,通过 docker run 或者 docker-compose 的方式启动容器。

通过配置 nginx 转发规则,匹配访问路径子应用容器端口。

假设服务器 ip192.168.2.192,主应用容器端口是 8889,子应用容器端口是 71007101

其中应用容器在构建镜像时是实现了 web 服务的,容器跑起来之后在服务器上是可以通过 127.0.0.1:7100来访问应用的。

因为前端子应用需要注册到主应用上,需要填写子应用的入口地址。

// index.jsregisterMicroApps([{name: 'app1',entry: process.env.NODE_ENV === 'production' ? '//192.168.2.192:7100' : '//localhost:7100',container: '#subapp-viewport',loader,activeRule: '/app1',},{name: 'app2',entry: process.env.NODE_ENV === 'production' ? '//192.168.2.192:7101' : '//localhost:7101',container: '#subapp-viewport',loader,activeRule: '/app2',}]
}

此时服务器需要开放的端口是主应用的 8889,子应用的 71007101

为了减少对外开放的端口数,我们要对 8889 端口进行 nginx 路径匹配转发。

修改子应用注册信息:

// index.jsregisterMicroApps([{name: 'app1',entry: process.env.NODE_ENV === 'production' ? '//192.168.2.192:8889/app1' : '//localhost:7100',container: '#subapp-viewport',loader,activeRule: '/app1',},{name: 'app2',entry: process.env.NODE_ENV === 'production' ? '//192.168.2.192:8889/app2' : '//localhost:7101',container: '#subapp-viewport',loader,activeRule: '/app2',}]
}

当前子应用在主应用配置的入口地址 entry192.168.2.192:8889/app1,实际经过 nginx 代理访问的是 127.0.0.1:7100,即实际访问的是运行在服务器的子应用。

配置 nginx 代理规则:

# nginx.confhttp {server {listen	8889;server_name 192.168.2.192;location /app1 {proxy_pass  127.0.0.1:7100try_files $uri $uri/ /index.html;}}server {listen	8889;server_name 192.168.2.192;location /app2 {proxy_pass  127.0.0.1:7101try_files $uri $uri/ /index.html;}}
}

主应用访问子应用流程图:

d533438747a099d58491d8ad764a3bf9.png
如果子应用部署在其他服务器,还需在其他服务器配置 nginx 的跨域问题

特点

访问权限规则由 nginx 的转发配置决定,可开放较少端口,对外开放的端口只有主应用服务的端口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在树莓派上使用 PowerShell 调用 Azure 上的 .NET Core API 获取疫情数据

点击上方蓝字关注“汪宇杰博客”导语最近因为疫情被关在家里,做了个无聊成就:我们将在树莓派上用 PowerShell 调用 Azure 上的一个 .NET Core 写的 API 来获取疫情数据。疫情数据API疫情数据来源于腾讯新闻的一个实时更新的页面,原始 API 地址…

gitlab 删除分支_初识gitlab工作流

git对我来说挺难理解的,平时遇到问题也是绕着走,倒也没啥大问题,但基于git软件的工作流却很重要,尤其对于一个组织来说。git工作流、github工作流、gitlab工作流都属于特性分支(feature branches)的类别,今天主要理解g…

.NET Core开发实战(第7课:用Autofac增强容器能力)--学习笔记(下)

07 | 用Autofac增强容器能力&#xff1a;引入面向切面编程&#xff08;AOP&#xff09;的能力如何获取没有命名的服务呢&#xff1f;// 获取没有命名的服务&#xff0c;把 namd 去掉即可 var servicenamed this.AutofacContainer.Resolve<IMyService>(); servicenamed.S…

hdfs读写流程_一文读懂HDFS分布式存储框架分析

一文读懂HDFS分布式存储框架分析HDFS是一套基于区块链技术的个人的数据存储系统&#xff0c;利用无处不在的私人PC存储空间及便捷的网络为个人提供数据加密存储服务&#xff0c;将闲置的存储空间利用起来&#xff0c;服务于正处于爆发期的个人数据存储市场。HDFS属于什么结构体…

gRPC in ASP.NET Core 3.x - gRPC 简介(1)

gRPC的结构 在我们搭建gRPC通信系统之前&#xff0c;首先需要知道gRPC的结构组成。 首先&#xff0c;需要一个server&#xff08;服务器&#xff09;&#xff0c;它用来接收和处理请求&#xff0c;然后返回响应。 既然有server&#xff0c;那么肯定有client&#xff08;客户端&…

arcgis 获取json经纬度_干货|ArcGIS的矢量化操作——ArcGis中进行地形图的配准

1.1.1方法简介1.1.1.1所有图件扫描后都必须经过扫描纠正&#xff0c;对扫描后的栅格图进行检查&#xff0c;以确保矢量化工作顺利进行。对影像的配准有很多方法&#xff0c;下面介绍一种常用方法。(1)打开 ArcMap&#xff0c;增加 Georeferncing 工具条。(2)把需要进行纠正的影…

使用ASP.NET Core构建RESTful API的技术指南

译者荐语&#xff1a;利用周末的时间&#xff0c;本人拜读了长沙.NET技术社区翻译的技术文章《微软RESTFul API指南》&#xff0c;打算按照步骤写一个完整的教程&#xff0c;后来无意中看到了这篇文章&#xff0c;与我要写的主题有不少相似之处&#xff0c;特意翻译下来。原文来…

查询ecshop网站代码排查方法_提升网站访问速度,提升网站访问速度,提升网站访问速度的个人经验分享...

一、前言网站打开慢这个问题&#xff0c;算是老生常谈了&#xff0c;在实际的生产的环境中&#xff0c;我们会经常遇到这样的问题。作为一个运维工程师&#xff0c;我们该从哪些角度去分析问题&#xff0c;判断问题&#xff0c;并最终解决问题。那么首先我会从几个方面分析这个…

dotnet 手工打一个 dotnet tool 包

现在依靠 dotnet 平台&#xff0c;可以方便分发工具&#xff0c;利用 NuGet 服务进行分发和使用工具。打一个 dotnet tool 包&#xff0c;可以将这个包上传到 NuGet 上&#xff0c;小伙伴通过和安装 NuGet 相同方式就可以将工具安装在本机上。本文将告诉大家如何手工打一个 dot…

漫谈Linux文档属性、拥有者、群组、权限

作者&#xff1a;justmine头条号&#xff1a;大数据与云原生微信公众号&#xff1a;大数据与云原生创作不易&#xff0c;在满足创作共用版权协议的基础上可以转载&#xff0c;但请以超链接形式注明出处。为了方便阅读&#xff0c;微信公众号已按分类排版&#xff0c;后续的文章…

java foreach跳出本次循环_Java中提供三种常用的循环语句

开发工具与关键技术&#xff1a;MyEclipse 10,java作者&#xff1a;刘东标循环语句&#xff1a;满足一定条件的情况下反复执行一个操作。Java中提供三种常用的循环语句&#xff1a;1.while循环语句while先判断为真&#xff0c;再执行while循环语句&#xff0c;如果条件为假&…

如何学习WPF技术?

本文由长沙DotNET技术社区【邹溪源】整理&#xff0c;共有7544字&#xff0c;阅读需耗时15分钟。引言在桌面开发领域&#xff0c;虽然在某些领域&#xff0c;基于electron的跨平台方案能够为我们带来某些便利&#xff0c;但是由于WPF技术能够更好的运用Direct3D带来的性能提升、…