首页 > 系统相关 >单个Nginx发布多个react静态页面

单个Nginx发布多个react静态页面

时间:2023-11-07 16:46:42浏览次数:26  
标签:nginx share app1 react Nginx html usr 页面

在有些网络环境中,端口是一种比较稀缺的资源,而我们又恰好有多个前端项目需要发布,我们可以采取将多个项目映射到同一个端口上面的方案加以解决。

本教程前端项目主要以react为主,部署在linux服务器上。

1. 将项目资源的访问地址修改为相对方式

在react项目package.json中,添加或者修改homepage属性为.。具体为:

{

  "name": "app1",
  "version": "0.1.0",
  "private": true,
  "homepage": ".", //资源地址改为相对当前的路由,默认是根目录/
  ...
}

2. 添加nginx配置

假设我们有两个项目,app1app2。首先将build后的项目都复制到/usr/share/nginx/html目录下,其次在/etc/nginx/conf.d/目录下添加我们的配置文件,nginx会自动加载该目录下以.conf结尾的配置文件,这里我们新建myapp.conf,并添加以下内容:

server {
    listen       80; # 监听80端口
    server_name  _;
    # 将根目录映射到/usr/share/nginx/html,注意此处为root
    location / {
        root /usr/share/nginx/html;
        index index.html; # 我们在根目录放了一个简单的主页,用于介绍我们的服务,
    }
    # 将app1目录映射到/usr/share/nginx/html/app1,注意此处为alias
    location /app1 {
        alias /usr/share/nginx/html/app1;
        index index.html;
        try_files $uri $uri/ =404;
    }
    location /app2 {
        alias /usr/share/nginx/html/app2;
        index index.html;
        try_files $uri $uri/ =404;
    }
}

3.重新加载nginx配置

将工作目录切换至nginx的安装目录,并执行以下命令,实现热重载配置文件:

./nginx -s reload

至此,我们就完成了将多个项目使用一个nginx代理发布的流程了。

可以通过地址http://localhost:80/访问主页,通过http://localhost:80/app1/访问ap1。注意该配置的访问地址必须以/结尾,不然无法正常访问。

...........................................

以下步骤为docker版的操作流程,为拓展教程,不使用docker的可以不看。

4.使用nginx的docker镜像进行发布

添加Dockerfile并添加以下内容:

FROM nginx

ENV TZ 'Asia/Shanghai' 
ENV LANG en_US.UTF-8 
ENV LANGUAGE en_US:en 
ENV LC_ALL en_US.UTF-8

ADD myapp.conf /etc/nginx/conf.d/ #添加nginx配置文件
ADD index.html /usr/share/nginx/html #添加简单的介绍主页
ADD ./app1/build /usr/share/nginx/html/app1 #添加项目app1
ADD ./app2/build /usr/share/nginx/html/app2 #添加项目app2

并使用以下命令执行自动镜像构建:

# npm run build
docker build . -t react-nginx

docker stop react-nginx
docker rm react-nginx
# docker rmi react-nginx

docker run --name react-nginx -p 8036:80 -d react-nginx 
docker logs -f react-nginx

标签:nginx,share,app1,react,Nginx,html,usr,页面
From: https://www.cnblogs.com/hsxian/p/17815325.html

相关文章

  • nginx配置http跳转https的几种要求和方式记录
    以nginx-1.23.2测试 (80被占用了,测试换成81端口)要求一:nginx端口有443,81,即能访问http访问81,也能https访问。nginx配置如下:server{listen81;listen443ssl;server_namexx.com.cn192.168.3.1127.0.0.1;ssl......
  • 通过 SAP UI5 IconTabBar 控件结合 FlexibleColumnLayout 实现多页面 Master-Detail
    本文也是来源于网络上一位朋友的咨询,这是这位朋友实际项目中的真实需求。本文介绍了一个实际项目中开发需求的详细实现过程。通过使用SAPUI5IconTabBar控件,我们可以让逻辑上属于不同业务范畴的界面,通过点击对应的Icon,以切换的方式,在同一块屏幕区域显示出来。IconTabBar结......
  • nginx 配置反向代理
    什么是反向代理?代理:通过客户机的配置,实现让一台服务器(代理服务器)代理客户机,客户的所有请求都交给代理服务器处理。反向代理:用一台服务器,代理真实服务器,用户访问时,不再是访问真实服务器,而是代理服务器。nginx可以当做反向代理服务器来使用:我们需要提前在nginx中配置好反向......
  • JS脚本实现刷新页面,随机加载背景图片
    新建switch.js,内容如下: varimgs=[ "https://mlabs.gitee.io/pics/webp/tiankong002-mid.webp", "https://mlabs.gitee.io/pics/webp/wallhaven-gp1q87.webp", "https://mlabs.gitee.io/pics/webp/shanshui007sm......
  • 项目中难点-页面点击“取消”按钮实现无感刷新--reload
    1、在App.vue页面中注册provide中定义reloadprovide(){return{reload:this.reload}} 2、在App.vue页面中的methods中定义方法reload目的通过控制router-view的显示与隐藏进行重新加载页面,实现无感刷新。reload(){this.isRouterAlive=falsethis.$next......
  • 项目中难点-A页面中填写查询条件并查询出表格数据后,点击详情跳转页面B,B页面返回A页面
    页面缓存keep-alive1、在路由routes中配置需要进行缓存的页面keepAlive:truemeta:{keepAlive:true,title:"页面名称",}如图: 2、在router-view显示的入口页面APP.vue中,对需要的页面进行缓存<template><divid="app"><router-viewv-if="!$route.meta.kee......
  • nginx多域名 多首页配置
    #user nobody;worker_processes auto;worker_cpu_affinityauto; error_log /midware/nginx/logs/error.loginfo;#error_log logs/error.log notice;#error_log logs/error.log info; pid    logs/nginx.pid;  events{  useepoll;......
  • 207-nginx 或者tomcat报错:413 Request Entity Too Large
    http{#...client_max_body_size20M;#设置最大允许大小为20MB#...}tomcat413RequestEntityTooLarge<Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort=&quo......
  • 超链接-跳转页面,跳转到文件,锚点
    一、<ahref="链接路径">链接名字</a>一般是默认效果,在当前页面中打开二、在当前页面打开页面:target="_self"<ahref="链接路径" target="_self">链接名字</a>三、在新标签打开页面:target="_blank"<ahref="链接路径"target="......
  • 如何在不刷新页面的情况下更改Nuxt.js路由器的路由参数?
    要在不刷新页面的情况下更改Nuxt.js路由器的路由参数,你可以使用Nuxt.js提供的$router.push方法,并传递一个新的路由对象。下面是一个示例://使用$router.push更新路由参数this.$router.push({path:'/your-route-path',query:{param1:'value1',param2:'value2'......