nginx 和gateway配置实现动静分离和反向代理
这两个配置文件分别是Nginx和Spring Cloud Gateway的配置文件,它们用于构建网关服务,进行请求的路由和转发。
前端发送请求的时候为了不暴露服务器地址,所以会使用nginx做反向代理的一个主要作用是隐藏后端服务器的真实地址,从而增加网络安全性和隐私。当客户端发送请求到反向代理服务器时,客户端不知道真正处理请求的后端服务器的地址和细节,而只与反向代理服务器通信
Nginx配置文件:使用nginx做微服务的静态资源服务器,如果服务很多,都写在一个http模块下,就会显得很臃肿,这样采用include引入的形式
#user nobody;
worker_processes 1;events {worker_connections 1024;
}
##文件加载 http模块中有许多的server 一个server表示一个虚拟主机
http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;# 引入自定义配置文件include leadnews.conf/*.conf;
}
引入的网关服务配置·文件
//app 网关集群
upstream app-gateway {server localhost:51601;
}server {listen 8801;location / {root html/app-web/;index index.html;}一般前端发送请求,都会在真正的api前面统一加一个前缀,方便nginx正则匹配location ~/app/(.*) {proxy_pass http://app-gateway/$1;proxy_set_header HOST $host;proxy_pass_request_body on;proxy_pass_request_headers on;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
解读:
-
upstream heima-app-gateway: 定义一个名为 heima-app-gateway 的upstream块,指定了一个后端服务器 localhost:51601。
-
server: 定义一个HTTP服务器块,监听在端口8801上。
-
location /: 针对根路径的请求,在html/app-web/目录下寻找静态文件,如果找到则返回。这通常用于服务静态资源文件。
-
location ~/app/(.*): 使用正则表达式匹配以 /app/ 开头的路径,并将这个部分捕获为$1。然后通过proxy_pass指令将请求转发到http://app-gateway/$1,实现了反向代理。
Spring Cloud Gateway配置文件:
spring:cloud:gateway:globalcors:add-to-simple-url-handler-mapping: true corsConfigurations:'[/**]':allowedHeaders: "*" allowedOrigins: "*" allowedMethods:- GET- POST- DELETE- PUT- OPTIONroutes:- id: useruri: lb://leadnews-user predicates:- Path=/user/**filters:- StripPrefix=1 - id: articleuri: lb://leadnews-articlepredicates:- Path=/article/**filters:- StripPrefix=1
-
spring.cloud.gateway.globalcors: 全局CORS配置,允许所有来源 (allowedOrigins: “"),所有请求头 (allowedHeaders: "”),以及指定的HTTP请求方法。
-
spring.cloud.gateway.routes: 定义了路由规则。
-
id: 路由的唯一标识符,在整个微服务的唯一服务标识。
-
uri: 指定了路由的目标地址。lb://leadnews-user 和 lb://leadnews-article 是服务的名称,lb 表示使用负载均衡器。
-
predicates: 定义了匹配条件,例如Path=/user/**表示匹配以 /user/ 开头的请求。
-
filters: 定义了过滤器,例如StripPrefix=1表示去掉请求路径中的一个前缀。过滤调用为了匹配nginx反向代理的统一前缀,这样才能知道转发到哪个服务
综合起来,Nginx用于反向代理静态文件和某些请求,而Spring Cloud Gateway用于动态路由和过滤请求。Nginx主要负责静态资源的服务,而Spring Cloud Gateway则负责动态的路由和请求过滤,将请求转发到相应的后端服务。这样的设计使得系统具有更好的灵活性和可维护性。
相关文章:
nginx 和gateway配置实现动静分离和反向代理
这两个配置文件分别是Nginx和Spring Cloud Gateway的配置文件,它们用于构建网关服务,进行请求的路由和转发。 前端发送请求的时候为了不暴露服务器地址,所以会使用nginx做反向代理的一个主要作用是隐藏后端服务器的真实地址,从而增加网络安全…...
【深度学习实验】网络优化与正则化(二):基于自适应学习率的优化算法详解:Adagrad、Adadelta、RMSprop
文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. 随机梯度下降SGD算法a. PyTorch中的SGD优化器b. 使用SGD优化器的前馈神经网络 2.随机梯度下降的改进方法a. 学习率调整b. 梯度估计修正 3. 梯度估计修正:动量法Momen…...
系统韧性研究(3)| 工程系统韧性要求
从最基本的层面上说,系统韧性指的是系统在逆境中继续执行其任务的程度。虽然对操作连续性至关重要,但系统的服务(能力)只是系统继续执行其任务所必须保护的一些资产。该系统必须检测不利因素,对其作出反应,…...
.net 5 发布后swagger页面不显示问题
1:项目右键属性-》生成xml--用于swagger文件读取 2:开启文件配饰swagger读取指定文件...
Spring Boot 3 整合 xxl-job 实现分布式定时任务调度,结合 Docker 容器化部署(图文指南)
目录 前言初始化数据库Docker 部署 xxl-job下载镜像创建容器并运行访问调度中心 SpringBoot 整合 xxl-jobpom.xmlapplication.ymlXxlJobConfig.java执行器注册查看 定时任务测试添加测试任务配置定时任务测试结果 结语附录xxl-job 官方文档xxl-job 源码测试项目源码 前言 xxl-…...
1985-2020年我国30m土地利用覆盖数据介绍
土地覆盖(LC)决定了地球各圈层之间的能量交换、水和碳循环。准确的 LC 信息是环境和气候研究的基本参数。考虑到在过去几十年中,随着经济建设的发展,中国发生了巨大的变化,连续和精细的 LC 监测是迫切需要的。然而,目前࿰…...
Django 社区志愿者管理系统
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 社区志愿者服务管理系统,主要的模块包括查看首页、个人中心、通知公告管理、志愿者管理、普通管理员管理、志愿活动管理、活动宣…...
wordpress如何修改数据库里用户ID下一个自增值的开始数字
有时候我们为了让别人认为网站有很多注册用户,会想把网站用户ID的起始数改大一点,因为WP默认的用户ID是从1开始,注册一个就加1,这样别人就很容易知道网站的用户量。 那么如何改呢?首先进phpmyadmin,找到wp…...
利用chatgpt大语言模型来做数据预处理
数据预处理是机器学习中的一个重要步骤,包括数据清洗、数据转换、特征选择等。这些步骤通常需要人工进行,或者使用专门的数据预处理工具和库,如Python的Pandas库、Scikit-learn库等。 今天我们将利用chatgpt(国内版本-小策智能问答)的辅助帮…...
【机器学习】五、贝叶斯分类
我想说:“任何事件都是条件概率。”为什么呢?因为我认为,任何事件的发生都不是完全偶然的,它都会以其他事件的发生为基础。换句话说,条件概率就是在其他事件发生的基础上,某事件发生的概率。 条件概率是朴…...
k8s 资源管理方式
k8s中资源管理方式可以划分为下面的几种:命令式对象管理、命令式对象配置、声明式对象配置。 命令式对象管理 命令式对象管理:直接使用命令的方式来操作k8s资源, 这种方式操作简单,但是无法审计和追踪。 kubectl run nginx-pod --imagengi…...
Golang Gin 接口返回 Excel 文件
文章目录 1.Web 页面导出数据到文件由后台实现还是前端实现?2.Golang Excel 库选型3.后台实现示例4.xlsx 库的问题5.小结参考文献 1.Web 页面导出数据到文件由后台实现还是前端实现? Web 页面导出表数据到 Excel(或其他格式)可以…...
实战之巧用header头
案例: 遇到过三次 一次是更改accept,获取到tomcat的绝对路径,结合其他漏洞获取到shell。 一次是更改accept,越权获取到管理员的MD5加密,最后接管超管权限。 一次是更改accept,结合参数获取到key。 这里以越…...
[AUTOSAR][诊断管理][ECU][$36] 数据传输
文章目录 一、简介二、服务请求报文定义三、服务请求报文中参数定义(1)blockSequenceCounter(2)transferRequestParameterRecord三、肯定响应(1)blockSequenceCounter(2)transferResponseParameterRecord四、支持的NRC五、示例代码36_transfer_data.c一、简介 这个服务…...
sw 怎么装新版本
我们在安装solidworks时,有时候会提示A newer version of this applic ation is already installed. Installation stopped.如下图所示 这时候需要点继续安装 然后会出现下图所示情况,vba7.1安装未成功 这是因为我们电脑中以前安装过更高版本的solidw…...
正点原子嵌入式linux驱动开发——Linux 音频驱动
音频是最常用到的功能,音频也是linux和安卓的重点应用场合。STM32MP1带有SAI接口,正点原子的STM32MP1开发板通过此接口外接了一个CS42L51音频DAC芯片,本章就来学习一下如何使能CS42L51驱动,并且CS42L51通过芯片来完成音乐播放与录…...
conda相关的命令操作
准备切换conda环境 cd C:\ProgramData\Anaconda3\Scripts查看所有环境 conda info --envs选择环境 activate pytorch安装torch pip install D:\installPackage\torch-1.2.0-cp36-cp36m-win_amd64.whl安装torchvision pip install D:\installPackage\torchvision-0.4.0-cp3…...
如何快速使用Vue3在electron项目开发chrome Devtools插件
1、建立Vue项目 为了方便快速建立项目,我已经写好脚手架,直接clone项目,快速开发 点击快速进入源代码 拉取代码 git clone https://github.com/xygengcn/electron-devtool.git安装依赖 yarn运行项目 yarn dev打包项目 yarn build2、安装…...
干洗店服务预约小程序有什么作用
要说干洗店,近些年的需求度非常高,一方面是人们生活品质提升,另一方面则是各种服饰对洗涤要求提升等,很多人的衣服很多也会通过干洗店进行清洁。 而对从业商家来说,市场庞大一方面需要不断进行市场教育、品牌提升&…...
【跟小嘉学 Rust 编程】三十四、Rust的Web开发框架之一: Actix-Web的进阶
系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
