我的编程空间,编程开发者的网络收藏夹
学习永远不晚

nigix代理失败的排查过程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

nigix代理失败的排查过程

背景

在刚开始迁移的过程中,由于经常进⾏部署实验,需要⽅便进⾏dns解析更换IP的操作,在预发布域名解析中申请了七层负载均衡的vip,通过vip来调整具体的解析ip

问题

这时问题就发⽣了,在后⼀个版本开发的过程中,前端发现部署到预发布后,所有的后端接⼝全部返回503,⽆法访问。但是直接通过后端域名可以正常调⽤所有接⼝。

前后端分离项⽬,前后端均为独⽴部署。前端通过nginx配置将所有后端请求全部代理⾄后端服务器,对⽤户屏蔽所有后端接⼝。可实现前端暴露在公⽹环境中,⽽后端全部在内⽹环境中,最⼤限度保证了后端接⼝安全。

分析排查

1、后端服务

在遇到这个问题后,⾸先检查后端服务是否有异常,通过postman直接调⽤后端api接⼝,均可正常调⽤,返回值正常。此刻说明后端服务是正常的,问题进⼀步向前排查。

2、后端Nginx

考虑是否在后端Nginx中漏配了server_name,导致nginx⽆法找到对应的server块但是通过检查,这部分配置也并⽆异常,并且通过查看nginx的⽇志⽂件,发现通过前端代理并没有转发到后端Nginx中。

此时基本上已经判断为前端代理失败,进⾏进⼀步排查。

3、Nginx saas配置平台系统

通过联系运维,⼀起排查问题,发现配置、解析并⽆异常,因为是预发布机器,运维建议先使⽤IP直接进⾏代理,不⾛DNS解析。

此时基本上已经确认问题就出在前端Nginx代理上,继续联系前端排查。

4、前端Nginx

  log_format realaddr_54033 '$remote_addr - $remote_user [$time_local]           "$http_x_forwarded_for" "$http_j_forwarded_for" '           '"$request" $status $bytes_sent '           '"$http_referer" "$http_user_agent" '           '"$gzip_ratio" '           '$request_time $upstream_response_time';   server {       listen 80;       server_name xxx.com ;       access_log /export/servers/nginx/logs/xxx.com/xxx.com_access.log realaddr_54033;       error_log /export/servers/nginx/logs/xxx.com/xxx.com_error.log warn;       root /export/Instances/xxx/runtime/;       error_page 302 = http://www.xxx.com/error2.aspx;       index index.html;       location / {               try_files $uri $uri/ /index.html;       index index.html;       root /export/Instances/xxx/runtime;}       location /api {           proxy_next_upstream http_500 http_502 http_503 http_504 error timeout                   invalid_header;           proxy_set_header Host $host;           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;           proxy_pass http://xxx.com;       }       location /logs/ {               autoindex off;       deny all;}   }

通过检查前端Nginx,并在本地进⾏Nginx实验,结合np官⽅⽂档终于发现了问题:

  1. 前端的机器是公有云服务器,⽆法ping通vip⽹段,需要在Nginx中配置DNS:
resolver 172.16.16.16 10.16.16.16 valid=10s;复制代码
  1. 也是最主要的原因,在转发的时候设置了错误的Header
proxy_set_header Host $host;

这句也是最致命的问题,由于之前并没有使⽤VIP,域名解析直接到⽬标IP,所以Header中的Host属性并没有太⼤的作⽤,⽽由于配置了负载均衡VIP,需要通过Header中的Host属性找到⽬标IP,⽽这⾥设置的Host为前端的域名,使得VIP⽆法找到⽬标IP,报503错误。

正常代理

设置了错误的Header

总结

我们在排查域名访问报错的时候,一定要有清洗的思路排查逻辑

使用了VIP转发的时候,一定要注意Header的正确配置

来源地址:https://blog.csdn.net/LBWNB_Java/article/details/127047971

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

nigix代理失败的排查过程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

分布式 | ddl 失败在 dble 中排查过程

作者:冒飞爱可生 dble 项目测试组成员,负责 dble 相关测试工作,拥有多年数据库中间件测试经验,擅长故障排查及性能调优。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。思考一个问题:当我们用 dble 执
分布式 | ddl 失败在 dble 中排查过程
2015-06-19

MybatisPlus批量保存原理及失效原因排查全过程

这篇文章主要介绍了MybatisPlus批量保存原理及失效原因排查全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-11

详解Discuz通信失败的排查步骤和处理技巧

Discuz通信失败通常是指在Discuz论坛中出现无法正常发送消息、私信等通讯功能。这种问题可能由网络配置、服务器设置、代码错误等多种原因引起。本文将详细介绍Discuz通信失败的排查步骤和处理技巧,帮助您快速定位问题并解决。步骤一:检
详解Discuz通信失败的排查步骤和处理技巧
2024-03-09

Nginx代理下载超过1GB的文件失败问题的解决

场景 项目中通过nginx代理请求后端的下载接口,超过1g的文件下载后文件损坏,并且大小只有1g 问题分析 Nginx Buffer 机制默认开启时根据 proxy_buffer_size 和 proxy_buffers 参数控制写入内存的
2023-08-19

SQLServer 错误 556 由于存储过程改变了目标表的架构,INSERT EXEC 失败。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 556 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 WRONGPAGE 消息正文 ...
SQLServer 错误 556 由于存储过程改变了目标表的架构,INSERT EXEC 失败。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 33081 由于 Authenticode 签名或文件路径无效,未能加载加密提供程序“%.*ls”。 请检查以前的消息,了解其他失败信息。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 33081 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 SEC_DLL_TRUST_VERIFICATION_FAILED ...
SQLServer 错误 33081 由于 Authenticode 签名或文件路径无效,未能加载加密提供程序“%.*ls”。  请检查以前的消息,了解其他失败信息。 故障 处理 修复 支持远程
2023-11-05

SQLServer 错误 33027 由于 Authenticode 签名或文件路径无效,未能加载加密提供程序“%.*ls”。 请检查以前的消息,了解其他失败信息。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 33027 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 SEC_CRYPTOPROV_CANTLOADDLL ...
SQLServer 错误 33027 由于 Authenticode 签名或文件路径无效,未能加载加密提供程序“%.*ls”。 请检查以前的消息,了解其他失败信息。 故障 处理 修复 支持远程
2023-11-05

编程热搜

目录