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

本教程前端项目主要以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发布多个react静态页面的更多相关文章

  1. Nginx优化_定义对静态页面的缓存时间

    修改Nginx配置文件,定义对静态页面的缓存时间 proxy ]# vim /usr/local/nginx/conf/nginx.conf server { listen 80; server_na ...

  2. Nginx+tomcat负载均衡时静态页面报404

    百度到的问题解决BLOG http://os.51cto.com/art/201204/326843.htm nginx+2台tomcat负载均衡,应用程序已部署,单独访问tomcat时,可以访问到所 ...

  3. Nginx简易配置文件(一)(静态页面及PHP页面解析)

    user nobody nobody; worker_processes 4; error_log logs/error.log; pid logs/nginx.pid; events { use e ...

  4. 用nginx的反向代理机制解决前端跨域问题在nginx上部署web静态页面

    用nginx的反向代理机制解决前端跨域问题在nginx上部署web静态页面 1.什么是跨域以及产生原因 跨域是指a页面想获取b页面资源,如果a.b页面的协议.域名.端口.子域名不同,或是a页面为ip地 ...

  5. 在CentOS 上搭建nginx来部署静态页面网站

    在centOs 上搭建nginx来部署静态页面网站 一.部署服务器环境 nginx:轻量级.高性能的HTTP及反向代理服务器,占用内存少,并发能力强,相比老牌的apache作为web服务器,性能更加卓 ...

  6. nginx和tomcat访问图片和静态页面的配置方法

    生产环境下,有时候需要访问图片,正常需要应用ftp.nginx等配套使用,但是有时候为了简化,可以用以下的两种简单的访问,说实话,就是为了偷懒,但是效果是能有的,这就行了,所以今天做这个简化版的方便大 ...

  7. react单页面应用的Nginx配置问题

    项目中多数使用react单页面开发,路由使用react-router的browser-router,这样页面访问路径看起来像是真实的,如http://xx.xxx.xxx/a/b.但当项目访问路径为多 ...

  8. mac os x 之通过远程主机在nginx上部署web静态页面

    1.mac使用ssh命令登陆远程主机 因为苹果mac os x自带ssh命令,所以我们只需打开终端输入 $ ssh user@remote 在这之前最好在服务器上上传自己的ssh key,避免每次登陆 ...

  9. Nginx设置静态页面压缩和缓存过期时间的方法

    使用nginx服务器的朋友可能都知道需要设置html静态页面缓存与页面压缩与过期时间的设置了,下面我来给各位同学介绍一下配置方法,包括对ico,gif,bmp,jpg,jpeg,swf,js,css, ...

  10. Django之使用celery和NGINX生成静态页面实现性能优化

    性能优化原理: 当我们要给client浏览器返回一个页面时,我们需要去数据库查询数据并将数据和基本页面模板渲染形成页面返回给客户端,但如果每一个用户访问时都去查询一次首页的的数据时,当日访问量很大时那 ...

随机推荐

  1. C语言循环坑 -- continue的坑

    文章目录 前言 一.continue语法 1.continue的作用 2.语法 二.大坑项目 题目 分析 正确写法 三.进坑调试 第一种 第二种 总结 前言 在使用continue和break时,会出 ...

  2. 【MAUI Blazor踩坑日记】6.mac标题栏颜色修改

    MAUI中mac的标题栏颜色默认是灰白色的,有一点丑 如果我们想要自定义颜色,并且在运行时也能更改颜色,该怎么办呢 万幸从一个GitHub库中借鉴到了办法 https://github.com/Ben ...

  3. 阿里如何实现秒级百万TPS?搜索离线大数据平台架构解读

    ★ 淘宝搜索阶段 在2008-2012这个阶段,我们重点支持淘宝搜索的业务发展,随着淘宝商品量的不断增加,逐步引入Hadoop.Hbase等开源大数据计算和存储框架,实现了搜索离线系统的分布式化,有力 ...

  4. 手摸手带你初探Vue 3.0

    1 前言 距离Vue 3.0正式发布已经过去一段时间了,2月7日Vue团队正式宣布Vue 3正式成为新的默认版本.最近接触的新项目也使用Vue 3.0来开发,因此有必要对它进行一波总结和学习. 2 简 ...

  5. Linux基础—vmvare安装及centos7安装

    Linux基础 # https://zhuanlan.zhihu.com/p/429509333 # 一 什么是操作系统 Operating System(操作系统) 简称OS Windows,Mac ...

  6. 2021-7-7 Vue的for使用实例

    <!DOCTYPE html> <html> <head> <title> </title> </head> <body& ...

  7. SpringBoot 启动流程分析(寻找扩展点)

    1.SpringBoot maven 依赖版本 <?xml version="1.0" encoding="UTF-8"?> <project ...

  8. Vue报错:Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location

    错误原因,我猜测多半是版本问题 在router/index.js中添加如下代码 const originalPush = VueRouter.prototype.push VueRouter.prot ...

  9. 由有序链表构建平衡二叉搜索树-sortedListToBST

    描述 给定一个有序列表,将其转换成为一个平衡搜索二叉树 题不难,不过在讨论中发现此题的中序遍历用法略有不同,感觉有点意思 手写一遍加深印象 暴力解法,链表转数组,额外空间O(N),递归遍历搞定.几分钟 ...

  10. phpexcel图片获取

    phpexcel图片获取常见的两种方式: require_once dirname(__FILE__) . '/../Jn/PHPExcel.php'; $filePath = "123.x ...