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的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架