【鱼皮大佬API开放平台项目】Spring Cloud Gateway HTTPS 配置问题解决方案总结
问题背景
项目架构为前后端分离的微服务架构:
- 前端部署在 8000 端口
- API 网关部署在 9000 端口
- 后端服务包括:
- api-backend (9001端口)
- api-interface (9002端口)
初始状态:
- 前端已配置 HTTPS(端口 8000)
- 后端服务未配置 HTTPS
- 通过 Nginx 进行反向代理
遇到的问题
- 第一阶段:400 Bad Request
This combination of host and port requires TLS
原因:前端使用 HTTPS,但后端服务未正确配置 SSL 证书。由于前端首先请求是到达api-gateway 网关层。借助Spring Cloud Gateway 进行请求转发。虽然给API gateway分配了https,但是它转发的另外两个模块的端口没有分配HTTPS导致请求转发错误。
- 第二阶段:403 错误
Failed to resolve 'api-backend' after 4 queries
原因:网关路由配置使用服务名而非具体地址,导致服务发现失败。
项目配置文件
解决方案
1. SSL 证书配置
为所有服务配置 SSL:
- API Gateway (9000端口):
application.yml
配置
server:port: 9000address: 0.0.0.0ssl:enabled: truekey-store: /www/server/nginx/ssl/<服务器ip>/keystore.p12key-store-password: 1234key-store-type: PKCS12http2:enabled: true
spring:cloud:gateway:routes:- id: api-backenduri: https://<服务器ip>:9001predicates: - Path=/api/backend/**filters:- StripPrefix=0- AddRequestHeader=X-Forwarded-Proto,https- id: api-interfaceuri: https://<服务器ip>:9002predicates: - Path=/api/interface/**filters:- StripPrefix=0- AddRequestHeader=X-Forwarded-Proto,httpsssl:key-store: /www/server/nginx/ssl/<服务器ip>/keystore.p12key-store-password: 1234key-store-type: PKCS12logging:level:org:springframework:cloud:gateway: DEBUGdubbo:application:name: api-gateway-dubboqosEnable: falseenable-file-cache: falseprotocol:name: dubboport: -1# 注意这里ssl也需要配置ssl:enabled: true
application-prod.yml
spring:cloud:nacos:server-addr: 192.168.15.233:8848secure: true # 添加这行,启用安全连接config:file-extension: yaml
bootstrap.yml
spring:cloud:nacos:server-addr: 192.168.15.233:8848secure: true # 添加这行,启用安全连接config:file-extension: yamlapplication:name: api-interface
- API-backend (9001端口)
application.yml
配置
server:port: 9001address: 0.0.0.0ssl:enabled: truekey-store: /www/server/nginx/ssl/<服务器ip>/keystore.p12key-store-password: 1234key-store-type: PKCS12http2:enabled: trueservlet:context-path: /api/backendsession:cookie:max-age: 7dsecure: truespring:mvc:pathmatch:matching-strategy: ant_path_matcherservlet:multipart:max-file-size: 10MBmax-request-size: 100MBsession:store-type: redistimeout: 7dknife4j:enable: truebasic:enable: trueusername: rootpassword: xxx
dubbo:application:name: api-backend-dubboqosEnable: falseenable-file-cache: falseprotocol:name: dubboport: -1registry:address: nacos://192.168.15.233:8848ssl:enabled: true # 注意这里true
application-prod.yml
# 客户端SDK 配置
api:client:gateway-host: https://<服务器ip>:9000
bootstrap.yml
spring:application:name: api-backendprofiles:active: prodcloud:nacos:server-addr: 192.168.15.233:8848secure: true # 添加这行,启用安全连接config:file-extension: yaml
- API- interface
application.yml
server:port: 9002address: 0.0.0.0ssl:enabled: truekey-store: /www/server/nginx/ssl/<服务器ip>/keystore.p12key-store-password: 1234key-store-type: PKCS12http2:enabled: trueservlet:context-path: /api/interface
#-------------------------------------------------
spring:mvc:pathmatch:matching-strategy: ant_path_matcher
dubbo:ssl:enabled: true
application-prod.yml
spring:cloud:nacos:server-addr: 192.168.15.233:8848secure: true # 添加这行,启用安全连接config:file-extension: yaml
bootstrap.yml
spring:cloud:nacos:server-addr: 192.168.15.233:8848secure: true # 添加这行,启用安全连接config:file-extension: yamlapplication:name: api-interface
2. Nginx 配置
更新 Nginx 配置以支持 HTTPS 代理:
location /api {rewrite ^/api/(.*) /$1 break;proxy_pass https://<服务器ip>:9000/api;proxy_ssl_verify off;proxy_ssl_server_name on;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;
}
关键配置点说明
-
SSL 证书配置
- 所有服务统一使用相同的 SSL 证书
- 启用 HTTP2 以提升性能
- 确保证书文件权限正确
-
网关路由
- 使用具体的服务地址而不是服务名
- 添加必要的请求头
- 保持 SSL 配置一致性
-
服务间通信
- Dubbo 服务启用 SSL
- 确保所有通信链路使用 HTTPS
最佳实践建议
-
证书管理
- 使用统一的证书存储位置
- 确保证书文件权限正确
- 定期更新证书
-
配置管理
- 使用配置中心统一管理
- 环境隔离(开发/生产)
- 密码等敏感信息加密存储
-
安全增强
- 启用 HTTP2
- 配置安全的 SSL 协议和密码套件
- 启用 HSTS 策略
相关文章:
【鱼皮大佬API开放平台项目】Spring Cloud Gateway HTTPS 配置问题解决方案总结
问题背景 项目架构为前后端分离的微服务架构: 前端部署在 8000 端口API 网关部署在 9000 端口后端服务包括: api-backend (9001端口)api-interface (9002端口) 初始状态: 前端已配置 HTTPS(端口 8000)后端服务未配…...
PHP反序列化
一、PHP面向对象的基础知识 基本概念 1、面向过程VS面向对象 以做饭为例,面向过程是自己从原材料到成品全部自己做,面向对象相当于去饭店,点菜,等待结果(上菜)。 2、类的定义 类是定义了一件事物的抽象…...
6、原来可以这样理解C语言_函数(7/8)嵌套调⽤和链式访问
目录 七、嵌套调⽤和链式访问 七、(1)、嵌套调⽤ 七、(2)、链式访问 七、嵌套调⽤和链式访问 七、(1)、嵌套调⽤ 嵌套调⽤就是函数之间的互相调⽤,每个函数就⾏⼀个乐⾼零件,正是因…...
安装 Jenkins 后无法访问用户名或密码且忘记这些凭证怎么办?
Jenkins 是一款功能强大的自动化服务器,在持续集成与交付(CI/CD)领域应用广泛。不过,用户在使用过程中,尤其是首次接触该系统或系统重启后,常常会遇到登录方面的问题。要是 Jenkins 突然要求输入用户名和密…...
VIVADO FIFO (同步和异步) IP 核详细使用配置步骤
VIVADO FIFO (同步和异步) IP 核详细使用配置步骤 目录 前言 一、同步FIFO的使用 1、配置 2、仿真 二、异步FIFO的使用 1、配置 2、仿真 前言 在系统设计中,利用FIFO(first in first out)进行数据处理是再普遍不过的应用了,…...
49_Lua调试
Lua提供了debug库用于创建自定义调试器,尽管Lua本身没有内置的调试器1。这个库允许开发者在程序运行时检查和控制执行流程,这对于开发过程中的错误查找和修复非常有用。 1.Debug库概述 debug库提供的函数可以分为两类:自省函数(introspection functions)和钩子函数(hoo…...
SR-BE 笔记和实验
一、笔记: SR不需要mpls,但要配置 mpls lsr-id 不需要MPLS LDP分标签,但仍然需要依赖IGP来分标签 fish—TE问题 SPF:Shortest Path First 最短路径算法 CSPF:Constrained SPF 受约束的SPF算法 BGP-LS: SR…...
实力认证 | 海云安入选《信创安全产品及服务购买决策参考》
近日,国内知名安全调研机构GoUpSec发布了2024年中国网络安全行业《信创安全产品及服务购买决策参考》,报告从产品特点、产品优势、成功案例、安全策略等维度对各厂商信创安全产品及服务进行调研了解。 海云安凭借AI大模型技术在信创安全领域中的创新应用…...
pytorch张量分块投影示例代码
张量的投影操作 背景 张量投影 是深度学习中常见的操作,将输入张量通过线性变换映射到另一个空间。例如: Y=W⋅X+b 其中: X: 输入张量(形状可能为 (B,M,K),即批量维度、序列维度、特征维度)。W: 权重矩阵((K,N),将 K 维投影到 N 维)。b: 偏置向量(可选,(N,))。Y:…...
Elasticsearch二次开发:实现实时定时同步同义词、近义词与停用词
Elasticsearch二次开发:实现实时定时同步同义词、近义词与停用词 引言 Elasticsearch(ES)作为开源搜索引擎的典范,以其强大的全文搜索、结构化搜索以及分析能力,在各个领域得到了广泛应用。在复杂的搜索场景中&#…...
Linux 常用文件查看命令
目录 cat 命令:连接与查看 more/less 命令:分页查看 tail 命令:实时追踪 cat 命令:连接与查看 基本功能:用于连接文件并打印到标准输出设备上,常用于查看文件内容。当有多个文件作为参数时,会…...
智能家居篇 一、Win10 VM虚拟机安装 Home Assistant 手把手教学
智能家居篇 一、Win10 VM虚拟机安装 Home Assistant 手把手教学 文章目录 [智能家居篇]( )一、Win10 VM虚拟机安装 Home Assistant 手把手教学 前言一.下载Vm版本的HomeAsistant安装包 二.打开Vmware选择新建虚拟机1.选择自定义高级2.选择16.x及以上3.选择稍后安装4.根据官网的…...
端口镜像和端口安全
✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网络安全从菜鸟到飞鸟的逆袭 目录 一,端口镜像二…...
打造更安全的Linux系统:玩转PAM配置文件
在Linux系统中,用户认证是确保系统安全的关键步骤。PAM(可插拔认证模块)为我们提供了一个非常灵活的框架,帮助我们管理各种服务的认证过程。其中,/etc/pam.d目录是PAM配置的核心部分,这里存放了每个服务所需…...
猫咪智商相当于人的几岁?
猫咪,这个神秘又高冷的物种,总能让我们又爱又恨。它们时而撒娇卖萌,时而独立自主,让人琢磨不透。那么,问题来了,猫咪的智商到底相当于人的几岁呢?今天,就来给大家好好揭秘一下喵星人…...
软件设计大致步骤
由于近期在做软件架构设计,这里总结下大致的设计流程 软件设计流程 1 首先要先写系统架构图,将该功能在整个系统的位置以及和大致的内部模块划分 2 然后写内部的结构图,讲内部的各个子系统,模块,组件之间的关系和调用…...
Elasticsearch入门学习
Elasticsearch是什么 Elasticsearch 是一个基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展的数据存储和矢量数据库。 它针对生产规模工作负载的速度和相关性进行了优化。 使用 Elasticsearch 近乎实时地搜索、索引、存储和分析各种形状和大小的数据。 特点 分布式&a…...
Mac安装配置使用nginx的一系列问题
brew安装nginx https://juejin.cn/post/6986190222241464350 使用brew安装nginx,如下命令所示: brew install nginx 如下图所示: 2.查看nginx的配置信息,如下命令: brew info nginxFrom:xxx 这样的,是n…...
Elasticsearch Python 客户端是否与自由线程 Python 兼容?
作者:来自 Elastic Quentin_Pradet 在这篇文章中,我们将进行一些实验,看看 Python Elasticsearch 客户端是否与新的 Python 3.13 自由线程(free-threading)版本兼容,其中 GIL 已被删除。 介绍 但首先&…...
ROS2 的所有控制台命令
以下是 ROS2 的控制台命令: 编译 colcon是ros的构建工具 sudo apt install python3-colcon-common-extensions 如只编译 turn_robot colcon build --packages-select turn_robot 编译全部功能包 colcon build source source /home/sukai/turn_robot/install…...
深入理解 Entity、VO、QO、DTO 的区别及其在 MVC 架构中的应用
文章背景 在现代软件开发中,我们经常会接触到各种数据结构的概念,比如 Entity、VO(Value Object)、QO(Query Object)、DTO(Data Transfer Object)等。这些概念尽管看似相似ÿ…...
角色认知培训
课程记录 需求传达的时候先强调重点,理清需求的过程中,大家一起分析 一开始单线程,总结复盘,提升效率,变成多线程 心态 2、复盘能力,每次优化策略 优化 团结、执行、 3、 头马的理解? 小…...
记录一次微信小程序使用云能力开发的过程
对于开发微信小程序云开发不知从何起的同学们,可以当作一次参考。虽说官方有文档,有模板示例,但是这些都是片段或者完整的结果展示。对于初学或者开发经验较少的同学们,可能不知先从那里入手进行第一步的开发。下面解析下构建微信…...
vim将一行行尾倒数第三个字符替换成1
%s/\v(.)(.)(.)(.)$/1\2\3\4\v:very magic模式,可以省略转义符 (.):圆括号的分组功能,将括号匹配内容放到第一个寄存器里面,第二个括号匹配内容放到第二个寄存器里面。 $:匹配行尾字符 \2:第二个括号匹配内容 \3:第三个…...
Kafka权威指南(第2版)读书笔记
目录 Kafka生产者——向Kafka写入数据生产者概览创建Kafka生产者bootstrap.serverskey.serializervalue.serializer 发送消息到Kafka同步发送消息异步发送消息 生产者配置client.idacks消息传递时间max.block.msdelivery.timeout.msrequest.timeout.msretries 和retry.backoff.…...
Yolov8 目标检测剪枝学习记录
最近在进行YOLOv8系列的轻量化,目前在网络结构方面的优化已经接近极限了,所以想要学习一下模型剪枝是否能够进一步优化模型的性能 这里主要参考了torch-pruning的基本使用,v8模型剪枝,Jetson nano部署剪枝YOLOv8 下面只是记录一个…...
5G+工业互联网迈入规模化发展新阶段
百度安全验证 https://blog.csdn.net/qq_25467441/article/details/145036191?sharetypeblogdetail&sharerId145036191&sharereferPC&sharesourceqq_25467441&spm1011.2480.3001.8118 好看视频-轻松有收获 产业供给加速提升。国内主流模组厂商引领全球5G模组…...
WOA-Transformer鲸鱼算法优化编码器时间序列预测(Matlab实现)
WOA-Transformer鲸鱼算法优化编码器时间序列预测(Matlab实现) 目录 WOA-Transformer鲸鱼算法优化编码器时间序列预测(Matlab实现)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现WOA-Transformer鲸鱼算法优化编…...
「刘一哥GIS」系列专栏《GRASS GIS零基础入门实验教程(配套案例数据)》专栏上线了
「刘一哥GIS」系列专栏《GRASS GIS零基础入门实验教程》全新上线了,欢迎广大GISer朋友关注,一起探索GIS奥秘,分享GIS价值! 本专栏以实战案例的形式,深入浅出地介绍了GRASS GIS的基本使用方法,用一个个实例讲…...
Spring boot面试题---- Spring boot项目运行原理
1.启动流程概述 Spring Boot 的启动是从一个带有main方法的主类开始的。这个主类通常会有一个@SpringBootApplication注解。这个注解是一个组合注解,它包含了@Configuration、@EnableAutoConfiguration和@ComponentScan。@Configuration注解表明这个类是一个配置类,它可以定义…...
HTML基础与实践
目录 HTML 结构 认识 HTML 标签 HTML 文件基本结构 标签层次结构 快速生成代码框架 HTML 常见标签 注释标签 标题标签: h1-h6 段落标签: p 换行标签: br 格式化标签 图片标签: img 超链接标签: a 编辑链接的几种形式: 表格标签 基本使用 合并单元格 …...
码编译安装httpd 2.4,测试
下载链接:https://dlcdn.apache.org/httpd/httpd-2.4.62.tar.gz [rootopenEuler-1 ~]# yum install gcc gcc-c make -y [rootopenEuler-1 ~]# ll /root total 9648 -rw-------. 1 root root 920 Jan 10 17:15 anaconda-ks.cfg -rw-r--r-- 1 root root 9872432…...
计算机网络 (45)动态主机配置协议DHCP
前言 计算机网络中的动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)是一种网络管理协议,主要用于自动分配IP地址和其他网络配置参数给连接到网络的设备。 一、基本概念 定义:DHCP是一种网络协议…...
赛灵思(Xilinx)公司Artix-7系列FPGA
苦难从不值得歌颂,在苦难中萃取的坚韧才值得珍视; 痛苦同样不必美化,从痛苦中开掘出希望才是壮举。 没有人是绝对意义的主角, 但每个人又都是自己生活剧本里的英雄。滑雪,是姿态优雅的“贴地飞行”,也有着成…...
【计算机体系结构、微架构性能分析】core 与 uncore 分别是哪一些部分?区分 core 和 uncore
在计算机体系结构中,Core 和 Uncore 是描述处理器内部架构的两个重要概念,尤其在多核处理器中更为常见。 1. Core(核心) Core 指的是处理器中的计算核心,是执行指令和处理数据的基本单元。每个核心都包含独立的执行单…...
基于 K-Means 聚类分析实现人脸照片的快速分类
注:本文在创作过程中得到了 ChatGPT、DeepSeek、Kimi 的智能辅助支持,由作者本人完成最终审阅。 在 “视频是不能 P 的” 系列文章中,博主曾先后分享过人脸检测、人脸识别等相关主题的内容。今天,博主想和大家讨论的是人脸分类问题。你是否曾在人群中认错人,或是盯着熟人的…...
Ubuntu更改apache的服务端口
1.介绍 承接上文,上文介绍了如何利用apache快速部署自己的网页,直接访问localhost就能打开网页的界面,这里其实是直接用了Ubuntu的80端口访问,如果我想换一个端口访问呢?应该怎么实现? 这一篇文章就来教你&…...
9.7 visual studio 搭建yolov10的onnx的预测(c++)
1.环境配置 在进行onnx预测前,需要搭建的环境如下: 1.opencv环境的配置,可参考博客:9.2 c搭建opencv环境-CSDN博客 2.libtorch环境的配置,可参考博客:9.4 visualStudio 2022 配置 cuda 和 torch (c)-CSDN博客 3.cuda环境的配置…...
“飞的”点外卖,科技新潮流来袭
一、开篇引入 上个周末,阳光正好,我带着孩子去公园游玩。公园里绿草如茵,花朵绽放,孩子们在草地上嬉笑奔跑,好不快活。玩累了,我们便在草坪上的帐篷里休息。 就在这时,天空中突然传来一阵嗡嗡…...
kubernetes v1.29.XX版本HPA、KPA、VPA并压力测试
序言: 在大型电商、购物、直播活动期间,对于火爆流量的激增,如何保障业务稳定并且做到资源不浪费,自动回收。 场景:kubernetes 原生容器化承载业务流量(非云环境) 方案:kubernetes自…...
java使用poi-tl自定义word模板导出
文章目录 概要整体架构流程创建word模板核心代码导出结果 概要 在软件开发领域,自定义Word模板的使用是导出格式化数据的一种常见做法。poi-tl(Apache POI Template Language)作为一款基于广受认可的Apache POI库的Word模板引擎,…...
云手机技术怎么实现的?
前言 随着亚矩阵云手机在跨境电商、海外社媒矩阵搭建、出海运营、海外广告投放、国内新媒体矩阵运营、品牌应用矩阵运营等领域内的普及和使用,云手机的理念已经被越来越多人所接受和认同。今天我们就一起来浅析一下,到底云手机的技术是怎么实现的&#…...
本地部署Web-Check网站检测与分析利器并实现远程访问实时监测
文章目录 前言1.关于Web-Check2.功能特点3.安装Docker4.创建并启动Web-Check容器5.本地访问测试6.公网远程访问本地Web-Check7.内网穿透工具安装8.创建远程连接公网地址9.使用固定公网地址远程访问 前言 本文我们将详细介绍如何在Ubuntu系统上使用Docker部署Web-Check…...
简洁明快git入门及github实践教程
简洁明快git入门及github快速入门实践教程 前言git知识概要:一:什么是 Git?二:安装 Git三:配置 Git配置git的用户名和邮箱地址创建仓库 四:Git实践五:远程仓库操作(基于git命令使用G…...
doris:本地文件导入
Doris 提供多种方式从本地数据导入: Stream Load Stream Load 是通过 HTTP 协议将本地文件或数据流导入到 Doris 中。Stream Load 是一个同步导入方式,执行导入后返回导入结果,可以通过请求的返回判断导入是否成功。支持导入 CSV、JSON、Pa…...
【网络安全】FortiOS Authentication bypass in Node.js websocket module
文章目录 漏洞说明严重等级影响的产品和解决措施推荐阅读 漏洞说明 FortiOS存在一个使用替代路径或者信道进行身份验证绕过漏洞,可能允许未经身份验证的远程攻击者透过向Node.js WebSocket模块发送特别设计的请求,可能获得超级管理员权限。 Fortinet 官…...
原型与原型链
建议大家看的时候手动画图!!!这点很重要!!! 原型链在结构上很像链表,每个对象中都保存着一个地址,指向当前对象的原型,可以层层向上查找,起到继承的效果。 …...
TIM定时中断
TIM定时中断 文章目录 TIM定时中断1.TIM定时器1.1定时器的定义1.1.1基本定时器1.1.2通用定时器1.1.3高级定时器 2.计数器有预装时序3.定时器结构及涉及的函数解析3.1定时中断基本结构3.2实现步骤3.3TIM本小节的库函数解释说明3.4计数器计数频率和计数器溢出频率 4.定时器定时中…...
Windows 上的 MySQL 8.4.3 和 WSL(Ubuntu)的 MySQL 8.0.40 之间配置 主从同步
在 Windows 上的 MySQL 8.4.3 和 WSL(Ubuntu)的 MySQL 8.0.40 之间配置 主从同步(Master-Slave Replication) 的过程略有不同,因为两者的 MySQL 版本和环境存在差异。以下是详细步骤,帮助你完成跨平台的主从…...
中职网络建设与运维ansible服务
ansible服务 填写hosts指定主机范围和控制节点后创建一个脚本,可以利用简化脚本 1. 在linux1上安装系统自带的ansible-core,作为ansible控制节点,linux2-linux7作为ansible的受控节点 Linux1 Linux1-7 Yum install ansible-core -y Vi /etc/ansible/hosts 添加…...