nginx(六十三)proxy模块(四)与上游服务器建立连接

2024-01-19 01:20

本文主要是介绍nginx(六十三)proxy模块(四)与上游服务器建立连接,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一   上游服务器建立连接

前提: 通过'upstream'模块的'负载均衡算法'选中一台'server',准备建立'tcp'连接

①   proxy_connect_timeout

含义: 建立tcp连接,控制'tcp三次握手'的超时时间变量: $upstream_connect_time'(包含TLS握手时间)'+++++++++++  分割线  +++++++++++1)当60s 'tcp 三次握手无法'建立成功,上游就'没有响应','nginx'会自身记录'502'响应码说明: 出现'502'一定是没有与'上游'建立tcp连接2) 如果到后端的'网络路由'不通,就'不会'等待60s,立刻报错5023) 定界:看日志中的'超时'时间是否超过60s说明: 一般都是'后端服务器(负载高、连通性、协议等)'有问题

②  proxy_socket_keepalive

说明: 与上游建立连接'成功'后,对tcp连接的'健康探活'

③  与上游建立HTTP长连接

④  上游建立tcp连接失败的容错方案

     proxy_next_upstream
     proxy_next_upstream_timeout
     proxy_next_upstream_tries

⑤  proxy_bind

作用: 修改'tcp'连接的'source ip'

1)nginx有多个'ip'地址,不使用系统'默认'分配的ip地址与'上游'建连2)透传'ip'地址3)实现'使用浮动ip地址(nginx集群)'与'后端服务器'进行通信

应用场景

nginx proxy_bind修改源码支持多ip绑定  相关参考

proxy_bind和split_client结合突破tcp端口数量限制

⑥  proxy_ignore_client_abort

++++++++++++ "设置on的效果 [定界499报错] [用于debug测试] "  ++++++++++++0) 原来'error.log'有日志,'access.log'没日志 --> 到只有'access.log'有日志1)由原来'大量'的'499'报错,到现在没有'499'报错,说明不是'nginx'的问题2)nginx会等待后端'处理完'(或者'超时'),然后'忠实记录'后端的返回信息到'日志' 现象: nginx中正常记录'非499(200、5xx)'到'access.log'日志,但是'客户端'没有收到'body'3)没有从'本质上'解决客户端没能拿到'请求响应'的问题499报错'解决'策略: 具体还是得从'请求链路'、'超时时间'、'程序处理性能的提升上'从根本解决问题++++++++++++ "建议"  ++++++++++++1) 生产环境'不建议'使用proxy_ignore_client_abort on来'处理'这个错误2) 因为这样当有'大量瞬间断开的请求'时,后端会'默默地'全部处理,比较'浪费'资源3) 而且'并发压力'比较大时,用这种方法将'压垮'机器

499报错

⑦  proxy_send_timeout

++++++++++++++++++  "分割线"  ++++++++++++++++++proxy_connect_timeout1)后端服务器连接的超时时间,发起'握手等候响应'超时时间(代理'连接'超时)默认60sproxy_read_timeout1)它决定了nginx会'等待多长时间'来获得请求的响应('响应超时')默认值60s

 

这篇关于nginx(六十三)proxy模块(四)与上游服务器建立连接的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/620861

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

Python pickle模块的使用指南

《Pythonpickle模块的使用指南》Pythonpickle模块用于对象序列化与反序列化,支持dump/load方法及自定义类,需注意安全风险,建议在受控环境中使用,适用于模型持久化、缓存及跨... 目录python pickle 模块详解基本序列化与反序列化直接序列化为字节流自定义对象的序列化安全注

python pymodbus模块的具体使用

《pythonpymodbus模块的具体使用》pymodbus是一个Python实现的Modbus协议库,支持TCP和RTU通信模式,支持读写线圈、离散输入、保持寄存器等数据类型,具有一定的参考价值... 目录一、详解1、 基础概念2、核心功能3、安装与设置4、使用示例5、 高级特性6、注意事项二、代码示例

Nginx实现端口映射的示例代码

《Nginx实现端口映射的示例代码》本文主要介绍了Nginx实现端口映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 找到nginx的部署路径2. 备份原来的配置文件3. 编辑nginx.conf文件4. 在

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏