关于微服务多链路调用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 小时前
微服务扇出:网络往返时间的影响与优化实践(5)
网络·微服务
咕噜企业分发小米2 小时前
如何用云服务器搭建PUBG服务器?
运维·服务器
skywalk81632 小时前
快速启动wiki维基百科服务器 kiwix-serve --port=8080 wikipedia_zh_physics_mini_2025-12.zim
linux·运维·服务器·wiki
那些年的笔记2 小时前
Ubuntu22.04 英文界面转成中文界面
linux·运维·服务器
funnycoffee1232 小时前
华为USG6555F 防火墙 ---华为6857交换机 光口对接无法UP故障
服务器·网络·华为·usg自协商
袁煦丞 cpolar内网穿透实验室2 小时前
可视化管理服务器:cpolar 内网穿透实验室第 725 个成功挑战
运维·服务器·远程工作·内网穿透·cpolar
上海云盾安全满满2 小时前
服务器的攻击与防御方法
运维·服务器
@YDWLCloud2 小时前
华为云国际版 vs 阿里云国际版:东南亚市场选型指南
大数据·服务器·阿里云·华为云·云计算
新兴AI民工2 小时前
【Linux内核七】进程管理模块:进程调度管理器sched_class
linux·服务器·linux内核
快乐的划水a2 小时前
上下文简析
linux·运维·服务器