React nginx配置,一个端口代理多个项目(转发后找不到CSS,JS及图片资源问题解决)

场景:
nginx 配置负载均衡,甲方只提供一个端口,一个域名地址
方法:
一个端口一个域名匹配多个应用

方法一:
依靠设备浏览器区分:
使用UserAgent头来识别用户的客户端,
CDN监测vary头的信息,如果内容不一致就缓存不同的内容,如果头信息一致才会缓存覆盖

vary头需要在源站添加,即在nginx中配置代理时进行添加,配置语句如下:

add_header Vary "Accept-Encoding, User-Agent";

根据头信息区分跳转
已经携带了请求头,对头信息的终端类型进行判断即可,如果符合终端类型则跳转到手机页面,不符合则跳转到PC页面

if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry|iPhone|Android))  {root /xxxxxx;
}

详情讲解-链接
如下,案例:

    #PC端upstream merchantsweb{server 172.17.x.11:8096 weight=20;server 172.17.x.22:8096 weight=1;}#移动端upstream merchantswebapp{server 172.17.x.11:8094 weight=20;server 172.17.x.22:8094 weight=1;}    server {listen       8078;server_name  172.17.0.100;#方法一location / {root   html;index  index.html index.htm Default.aspx; add_header Vary "Accept-Encoding, User-Agent";#判断是否为手机端if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry|iPhone|Android))  {proxy_pass http://merchantswebapp;}proxy_pass http://merchantsweb;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

方法二:
使用正则区分

    #PC端upstream merchantsweb{server 172.17.x.11:8096 weight=20;server 172.17.x.22:8096 weight=1;}#移动端upstream merchantswebapp{server 172.17.x.11:8094 weight=20;server 172.17.x.22:8094 weight=1;}    server {listen       8078;server_name  172.17.0.100;#方法二#判断路径  所有# pc端 http://172.17.0.100:8078# 移动端 http://172.17.0.100:8078/mobileApp/index.htmllocation / {root   html;index  index.html index.htm Default.aspx; proxy_pass http://merchantsweb;}#移动端 页面地址带有/mobileApp--http://172.17.0.100:8078/mobileApp/index.htmllocation /mobileApp {root   html;index  index.html index.htm Default.aspx; proxy_pass http://merchantswebapp;}# pc端 资源文件路径带有/merchants.ams.web--http://172.17.0.100:8078/merchants.ams.web/static/xxxx.js# ^~ 优先级高于~ .*location ^~ /merchants.ams.web {expires 12h;proxy_pass http://merchantsweb;}#所有# 设置js css和图片代理路径,否则前端访问找不到#移动端http://172.17.0.100:8078/static/xxxx.jslocation ~ .*\.(js|css)?$ {expires 12h;#移动端(根据需求来--标识)proxy_pass http://merchantswebapp; }location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)?$ {expires 12h;#移动端(根据需求来--标识)proxy_pass http://merchantswebapp;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

正则区分-案例

Nginx配置——区分PC或手机访问不同域名以及http跳转https

重要

1、项目地址匹配了(资源文件需要查看,能否匹配)
方法:
对应不同的应用–(nginx:一个端口对应不同应用判断
location ^~ /images/ {}
location ~* .(gif|jpg|jpeg)$ {}

  • 匹配所有以 gif、jpg或jpeg 结尾的请求
    然而,所有请求 /images/ (资源文件路径,项目打包后index.html文件内查看 关联路径,可修改React:修改package.json 文件内的homepage:可更改路径))下的图片会被 location ^~ /images/ 处理,因为 ^~ 的优先级更高,所以到达不了这一条正则

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

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

相关文章

OCP-042之:Oracle结构体系

1. Oracle结构体系 1.1 概述 1.1.1 版本 版本后缀所代表的含义 i:代表基于Internet架构的数据库,如9i g:代表基于grid(网格)的数据库,如11g grid的目的:降低成本,提高服务质量,简化管理 Storage Grid:ASM(automatic storage management),继承了LVM技术,Oracl…

16_ Vue.js高级指南:条件渲染、列表渲染与数据双向绑定

文章目录 1. 条件渲染v-if2. 列表渲染v-for3. 数据双项绑定v-model4. 计算属性Appendix 1. 条件渲染v-if v-if标签直接接收函数或boolean类型变量 v-if 为true,则当前元素会进入到dom树v-else会自动执行 前方v-if的取反操作 v-show v-show值为true则值展示值不展示…

Linux配置uwsgi环境

Linux配置uwsgi环境 1.进入虚拟环境 source /envs/django_-shop-system/bin/activate2.安装uwsgi pip install uwsgi3.基于uwsgi运行项目 – 基于配置文件 在项目目录下创建配置文件 #socket 0.0.0.0:8005 http 0.0.0.0:8005 # http120.55.47.111:8005 chdir/opt/www/djang…

51单片机-独立按键控制灯灯灯

目录 简介: 一. 1个独立按钮控制一个灯例子 二. 在加一个独立按键,控制第二个灯 三. 第一个开关 开灯, 第二个开关关灯 四. 点一下开灯,在点一下关灯 五. 总结 简介: 51 单片机具有强大的控制能力,而独立按键则提供了一种简单的输入方式。 当把独立按键与 …

LeetCode72编辑距离

题目描述 解析 一般这种给出两个字符串的动态规划问题都是维护一个二维数组,尺寸和这两个字符串的长度相等,用二维做完了后可以尝试优化空间。这一题其实挺类似1143这题的,只不过相比1143的一种方式,变成了三种方式,就…

java中关于>>>一点理解

如果两个int类型的非常大的整数相加,得到的结果很有可能是一个负数,因为在Java中对数字的计算是将数字转换成二进制进行计算的,并且Java会将得到的二进制结果的最高位看成符号位,从而导致得到负数, 举个例子&#xff…

微型丝杆与滚珠丝杆性能差异与适用场景!

滚珠丝杆是工具机械和精密机械上最常使用的传动元件,其主要功能是将旋转运动转换成线性运动,或将扭矩转换成轴向反复作用力。同时兼具高精度、可逆性和高效率的特点。而微型丝杆是一种直径为0.5mm以下且线性误差在几微米以内,精度高、传动稳定…

达梦8 新老排序机制比较

达梦的排序机制由四个dm.ini参数控制: #maximum sort buffer size in Megabytes ,有效值范围(1~2048) SORT_BUF_SIZE 100 #maximum sort blk size in Megabytes,有效值范围&am…

vivado HW_BITSTREAM、HW_CFGMEM

HW_比特流 描述 从比特流文件创建的硬件比特流对象hw_bitstream,用于关联 在Vivado的硬件管理器功能中使用硬件设备对象hw_device 设计套件。 比特流文件是从具有write_bitstream的放置和路由设计创建的 命令硬件位流对象是使用 create_hw_bitstream命令&#xff0c…

【Gitlab】Gitlab MAC M1通过Docker Desktop安装教程

一、拉取镜像 docker pull yrzr/gitlab-ce-arm64v8 二、配置容器 2.1 配置Volumes 镜像下载完成后,可在Docker Desktop看到镜像 点击run,弹出以下界面,配置端口映射和目录挂载后,即可生成一个容器 配置Volumes Host PathCont…

Redis命令使用示例(二)

1 COMMAND INFO 返回多个Redis命令的详细信息的数组回复 redis> COMMAND INFO get set eval 1) 1) "get"2) (integer) 23) 1) "readonly"2) "fast"4) (integer) 15) (integer) 16) (integer) 17) 1) "read"2) "string"…

机器学习--回归模型和分类模型常用损失函数总结(详细)

文章目录 引言 回归模型常用损失函数均方误差(Mean Squared Error, MSE)均方根误差(Root Mean Squared Error, RMSE)平均绝对误差(Mean Absolute Error, MAE)Huber损失(Huber Loss) …

【名词解释】Unity的Slider组件及其使用示例

Unity的Slider组件是一个UI控件,它允许用户通过拖动滑块来选择一个值,这个值通常在指定的范围内。Slider组件通常用于调整游戏设置(如音量、亮度等)或作为游戏中的输入方式。 以下是一些常见的使用场景: 音量控制&…

【HTTP系列】HTTP1.0/1.1/2.0 的区别

文章目录 一、HTTP1.0二、HTTP1.1三、HTTP2.0# 多路复用二进制分帧首部压缩服务器推送 四、总结HTTP1.0:HTTP1.1:HTTP2.0: 参考文献 一、HTTP1.0 HTTP协议的第二个版本,第一个在通讯中指定版本号的HTTP协议版本 HTTP 1.0 浏览器…

学习笔记——路由网络基础——环回接口(loopback)

6、环回接口(loopback) (1)定义 环回接口(loopback) :是一种虚拟的接口,是一种纯软件性质的虚拟接口,模拟一个单独的网段。 Loopback等于在设备中模拟另外不同的网络,实现不需要物理接口连接设备,依然可以模拟的功能…

linux 启动minio.rpm , minio服务启动

在Linux系统中安装并启动MinIO服务器,可以使用以下步骤: 首先,确保有一个MinIO的RPM包。如果没有,可以从MinIO的官方网站下载。 使用RPM命令安装MinIO包: sudo rpm -ivh minio.rpm安装完成后,MinIO服务会…

海思Hi3519DV500方案1200万无人机吊舱套板

海思Hi3519DV500方案1200万无人机吊舱套板 Hi3519DV500 是一颗面向行业市场推出的超高清智能网络摄像头SoC。该芯片最高 支持四路sensor 输入,支持最高4K30fps 的ISP 图像处理能力,支持2F WDR、 多级降噪、六轴防抖、全景拼接、多光谱融合等多种传统图像…

【Python】一文向您详细介绍 `__dict__` 的作用和用法

【Python】一文向您详细介绍 __dict__ 的作用和用法 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的普通本硕…

TalkingData数据统计:洞察与应用

TalkingData数据统计:洞察与应用 在数据驱动的时代,数据统计和分析已经成为各行各业的重要工具。在这个过程中,TalkingData作为一家领先的数据智能服务提供商,为我们提供了丰富的数据分析工具和解决方案。本文将带您深入了解Talk…

以sqlilabs靶场为例,讲解SQL注入攻击原理【42-53关】

【Less-42】 使用 or 11 -- aaa 密码,登陆成功。 找到注入点:密码输入框。 解题步骤: # 获取数据库名 and updatexml(1,concat(0x7e,(select database()),0x7e),1) -- aaa# 获取数据表名 and updatexml(1,concat(0x7e,(select group_conca…