关于微服务多链路调用405(客户端通过nginx请求后端A,A通过调用B的nginx请求B的后端)

题目:

每个服务都有一个nginx承载,a服务由nginxa做承载,b服务由nginxb做承载,每个nginx都承载了一个前端服务,然后客户端通过nginxa来请求后端服务a ,然后再a服务内请求b服务,这个时候b服务返回405报错。

前置知识:

nginx相关:其一,默认请求前端静态资源时候是默认get请求,如果使用post请求就会抛405

其二,nginx收到请求以后回去匹配域名与location块中的域名,如果匹配不上默认会匹配location localhost 这个块。

贴一个比较好的解释

nginx405异常原因与解决方法,最详细解释-腾讯云开发者社区-腾讯云

好了,可以解释了,

1. 多层代理的Host头混乱

当请求在多层代理中传递时:

text

复制代码
原始请求(客户端→B):
Host: b.example.com

B应用发起新请求(调用C)时,拷贝了这些头:
Host: b.example.com  ← 错误!应该是C服务的域名

实际需要的是:
Host: c.internal.com 或 c.example.com

为什么会导致405?

  • C服务的Nginx根据Host头匹配server

  • 如果匹配不到,可能会:

    • 使用默认server块(返回405)

    • 被防火墙/安全策略拦截

解决方式:第二次调用 干掉"host","connection","keep-alive","transfer-encoding","x-forwarded-host"

至于这些再链接中的意义后续有时间再整理贴出来。。。

相关推荐
像少年啦飞驰点、2 分钟前
零基础入门 Spring Boot:从“Hello World”到可部署微服务的完整学习指南
java·spring boot·微服务·编程入门·后端开发
松涛和鸣11 分钟前
69、Linux字符设备驱动实战
linux·服务器·网络·arm开发·数据库·驱动开发
女王大人万岁14 分钟前
Go语言JSON标准库(encoding/json):功能解析与实战指南
服务器·开发语言·后端·golang·json
“αβ”25 分钟前
IP协议内容补充
服务器·网络·网络协议·tcp/ip·智能路由器·nat·ip协议
深圳市恒讯科技29 分钟前
2026新加坡服务器硬件防火墙配置推荐
运维·服务器·云计算
小江||小廖30 分钟前
服务器如何设置共享文件夹,让其他内网电脑可以访问
运维·服务器
小虾米vivian31 分钟前
达梦使用dmfldr和外部表导入txt数据(windows环境)
java·服务器·数据库
历程里程碑34 分钟前
Linux19 实现shell基本功能
linux·运维·服务器·算法·elasticsearch·搜索引擎·哈希算法
霍格沃兹测试学院-小舟畅学38 分钟前
Playwright测试超时管理:全局与局部超时设置
运维·服务器·网络
码刘的极客手记1 小时前
vSphere 4.1 三大实用实战:vCenter 告警自动化、SIOC 无 License 启用及 Dropbox 存储运行 VM
运维·服务器·网络·自动化·虚拟机