首页 > 系统相关 >nginx 配置

nginx 配置

时间:2024-08-12 10:16:51浏览次数:6  
标签:配置 server nginx client proxy timeout 超时

 

 

http 文件下载  unexpected eof

nginx 日志:nginx client timed out (110 connection timed )

 

来自:https://www.whyvv.top/nginx_timeout.html

nginx访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,例如程序需要执行90秒,而nginx默认最大响应等待时间为30秒,这样就会出现超时。通常有以下几种情况导致:

  • 程序在处理大量数据,导致等待超时。
  • 程序中调用外部请求,而外部请求响应超时。
  • 连接数据库失败而没有停止,死循环重新连。
  • nginx默认的fastcgi进程响应的缓冲区太小,致fastcgi进程被挂起

出现这种情况,我们可以先优化程序,缩短执行时间。另一方面,可以调大nginx超时限制的参数,使程序可以正常执行。

timeout参数

1. 常规timeout参数

send_timeout

语法:send_timeout time

默认值:60s

配置区域:http server location

说明:设置响应传输到客户端的超时时间。仅在两个连续的写操作之间设置超时,而不是为整个
响应的传输。如果客户端在此时间内未收到任何内容,则会关闭连接。

client_header_timeout

语法:client_header_timeout time

默认值:60s

配置区域:http server

说明:指定等待client发送一个请求头的超时时间(例如:GET / HTTP/1.1).仅当在一次read中,没有收到请求头,才会算成超时。如果在超时时间内,client没发送任何东西,nginx返回HTTP状态码408(“Request timed out”)

client_body_timeout

语法:client_body_timeout time

默认值:60s

配置区域:http server location

说明:该指令设置请求体(request body)的读超时时间。仅当在一次readstep中,没有得到请求体,就会设为超时。超时后,nginx返回HTTP状态码408(“Request timed out”)

keepalive_timeout

语法:keepalive_timeout timeout [ header_timeout ]

默认值:75s

配置区域:http server location

说明:第一个参数指定了与client的keep-alive连接超时时间。服务器将会在这个时间后关闭连接。可选的第二个参数指定了在响应头Keep-Alive: timeout=time中的time值。这个头能够让一些浏览器主动关闭连接,这样服务器就不必要去关闭连接了。没有这个参数,nginx不会发送Keep-Alive响应头(尽管并不是由这个头来决定连接是否“keep-alive”)
两个参数的值可并不相同

  • 注意不同浏览器怎么处理“keep-alive”头
  • MSIE和Opera忽略掉"Keep-Alive: timeout=" header.
  • MSIE保持连接大约60-65秒,然后发送TCP RST
  • Opera永久保持长连接
  • Mozilla keeps the connection alive for N plus about 1-10 seconds.
  • Konqueror保持长连接N秒

lingering_timeout

语法:lingering_timeout time

默认值:5s

配置区域:http server location

说明:lingering_close生效后,在关闭连接前,会检测是否有用户发送的数据到达服务器,如果超过lingering_timeout时间后还没有数据可读,就直接关闭连接;否则,必须在读取完连接缓冲区上的数据并丢弃掉后才会关闭连接。

resolver_timeout

语法:resolver_timeout time

默认值:30s

配置区域:http server location

说明:该指令设置DNS解析超时时间

2. fastcgi的timeout设置

配置区域:http

fastcgi_connect_timeout

fastcgi连接超时时间,默认60秒

fastcgi_send_timeout

nginx进程向fastcgi进程发送请求过程的超时时间,默认值60秒

fastcgi_read_timeout

fastcgi进程向nginx进程发送输出过程的超时时间,默认值60秒

3. proxy转发模块的timeout设置

proxy_connect_timeout

语法:proxy_connect_timeout time

默认值:60s

配置区域:http server location

说明:该指令设置与upstream server的连接超时时间,有必要记住,这个超时不能超过75秒。

这个不是等待后端返回页面的时间,那是由proxy_read_timeout声明的。如果你的upstream服务器起来了,但是hanging住了(例如,没有足够的线程处理请求,所以把你的请求放到请求池里稍后处理),那么这个声明是没有用的,由于与upstream服务器的连接已经建立了。

proxy_read_timeout

语法:proxy_read_timeout time

默认值:60s

配置区域:http server location

说明:该指令设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来获得请求的响应。这个时间不是获得整个response的时间,而是两次reading操作的时间。

proxy_send_timeout

语法:proxy_send_timeout time

默认值:60s

配置区域:http server location

说明:这个指定设置了发送请求给upstream服务器的超时时间。超时设置不是为了整个发送期间,而是在两次write操作期间。如果超时后,upstream没有收到新的数据,nginx会关闭连接

proxy_upstream_fail_timeout(fail_timeout)

语法:server address [fail_timeout=30s]

默认值:10s

配置区域:upstream

说明:Upstream模块下 server指令的参数,设置了某一个upstream后端失败了指定次数(max_fails)后,该后端不可操作的时间,默认为10秒

4. 负载均衡配置timeout时的2个参数

  • fail_timeout:默认10s
  • max_fails:默认1次

这2个参数一起配合,来控制在fail_timeout的时间内nginx怎样认为upstream中的某个server是失效的,某个server连接失败了max_fails次,则nginx会认为该server不工作了。同时,在接下来的 fail_timeout时间内,nginx不再将请求分发给失效的server。如果不设置这2个参数,fail_timeout默认为10s,max_fails默认为1。就是说,只要某个server失效一次,则在接下来的10s内,就不会分发请求到该server上

调整缓存区大小

有时因为http请求和响应的数据量比较大,导致超出nginx默认缓存而返回504这类情况,可以适当调整各类缓冲区大小来满足实际需求:

fastcgi_buffers 8 128k;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_buffer_size 4k;
proxy_buffers 32 4k;
proxy_busy_buffers_size 64k;

 

 

出现 nginx client timed out (110: Connection timed out) while sending response 错误通常表明在 Nginx 作为反向代理或 Web 服务器时,客户端在服务器处理请求或返回响应的过程中等待的时间超过了 Nginx 配置的超时时间。以下是一些可能的原因和解决方法:

可能的原因:
后端服务响应慢:

后端服务器处理请求的时间过长,导致 Nginx 等待超时。
网络问题:

网络不稳定或延迟较高,导致响应在传输过程中丢失或延迟。
Nginx 配置不当:

Nginx 配置中的超时时间(如 proxy_read_timeout、send_timeout 等)设置得过短。
服务器负载过高:

服务器资源(如 CPU、内存)不足,导致请求处理变慢。
大文件传输:

如果是在传输大文件或流媒体内容,客户端可能需要更长时间来接收数据,导致超时。
解决方法:
检查后端服务性能:

确保后端服务能够在合理的时间内响应请求。如果后端服务的处理时间确实较长,考虑优化代码或增加服务器资源。
增加超时时间:

可以调整 Nginx 的超时时间设置,例如增加 proxy_read_timeout、proxy_send_timeout、send_timeout、client_body_timeout 等配置项的时间。
nginx
复制代码
server {
    location / {
        proxy_read_timeout 300;
        proxy_send_timeout 300;
        send_timeout 300;
    }
}
检查网络:

检查服务器之间的网络连接是否正常,排除网络延迟或丢包的问题。
增加服务器资源:

如果服务器负载过高,考虑增加服务器资源或使用负载均衡来分担负载。
适当处理大文件:

如果需要传输大文件,考虑使用分块传输或调整 Nginx 的缓冲区配置。
通过这些步骤,你可以更准确地定位和解决 nginx client timed out (110: Connection timed out) while sending response 的问题。

 

 

参考:

 

出现 nginx client timed out (110: Connection timed out) while sending response 错误通常表明在 Nginx 作为反向代理或 Web 服务器时,客户端在服务器处理请求或返回响应的过程中等待的时间超过了 Nginx 配置的超时时间。以下是一些可能的原因和解决方法:

可能的原因:

  1. 后端服务响应慢

    • 后端服务器处理请求的时间过长,导致 Nginx 等待超时。
  2. 网络问题

    • 网络不稳定或延迟较高,导致响应在传输过程中丢失或延迟。
  3. Nginx 配置不当

    • Nginx 配置中的超时时间(如 proxy_read_timeoutsend_timeout 等)设置得过短。
  4. 服务器负载过高

    • 服务器资源(如 CPU、内存)不足,导致请求处理变慢。
  5. 大文件传输

    • 如果是在传输大文件或流媒体内容,客户端可能需要更长时间来接收数据,导致超时。

解决方法:

  1. 检查后端服务性能

    • 确保后端服务能够在合理的时间内响应请求。如果后端服务的处理时间确实较长,考虑优化代码或增加服务器资源。
  2. 增加超时时间

    • 可以调整 Nginx 的超时时间设置,例如增加 proxy_read_timeoutproxy_send_timeoutsend_timeoutclient_body_timeout 等配置项的时间。
    nginx server { location / { proxy_read_timeout 300; proxy_send_timeout 300; send_timeout 300; } }
  3. 检查网络

    • 检查服务器之间的网络连接是否正常,排除网络延迟或丢包的问题。
  4. 增加服务器资源

    • 如果服务器负载过高,考虑增加服务器资源或使用负载均衡来分担负载。
  5. 适当处理大文件

    • 如果需要传输大文件,考虑使用分块传输或调整 Nginx 的缓冲区配置。

通过这些步骤,你可以更准确地定位和解决 nginx client timed out (110: Connection timed out) while sending response 的问题。

标签:配置,server,nginx,client,proxy,timeout,超时
From: https://www.cnblogs.com/rebrobot/p/18354414

相关文章

  • Elasticsearch 学习总结 - 相关配置补充说明
    Elasticsearch的基本概念term索引词,在elasticsearch中索引词(term)是一个能够被索引的精确值。foo,FooFoo几个单词是不相同的索引词。索引词(term)是可以通过term查询进行准确的搜索。text文本是一段普通的非结构化文字,通常,文本会被分析称一个个的索引词,存储在elasticsearch的索......
  • Java学习笔记2--JDK的安装和配置
    一.进入oracle官网,下载jdkoracle官网:Oracle|CloudApplicationsandCloudPlatformps:不同的浏览器,可能进入oracle官网,会只显示部分内容,所以建议使用googleChrome浏览器在下载之前,首先需要去查看本机电脑的配置型号,如下图,右键---此电脑---选择点击属性,显示x64版本如下......
  • Spring Boot配置类的注解
    SpringBoot中,若某类只用@ConfigurationProperties注解,然后该类:没有在扫描路径下或没用@Component等注解就会导致无法被扫描为bean,须在配置类用@EnableConfigurationProperties注解去指定这个类,才能使@ConfigurationProperties生效,并作为一个bean添加进Spring......
  • 打开Office(word、excel、ppt)显示操作系统当前的配置不能运行此应用程序最全解决方案
    我以前用过分区助手把office从c盘挪到d盘了,从那以后office就用不了了,然后我就删了(貌似没删干净)。最近由于有使用word的需求,所以我从学校官网找到正版软件的安装包,按照步骤重新卸载电脑中office残留并安装好之后,打开word会提示“操作系统当前的配置不能运行此应用程序”,ppt......
  • 【OpenCV】window 下 VS Code 配置OpenCV
    文章目录前言直接使用OpenCV编译好的库自己编译OpenCV前言在网上找了些资料,大致得出VSCode开发OpenCV的环境配置流程,如下安装VSCode安装MinGW安装CMake下载OpenCV配置OpenCV配置VSCode曾经在公司用过OpenCV,貌似并没有编译这一步,不明所以以下是GPT的回答:使......
  • Linux 上 Conda 环境安装与配置超详细教程
    在数据分析、机器学习和科学计算等领域,Conda是一个非常流行的包管理和环境管理系统。它可以帮助你轻松地安装和管理Python、R以及其他语言的软件包,并且能够方便地创建隔离的工作环境。本文将为你详细介绍如何在Linux系统上安装和配置Conda环境。准备工作在开始之前,请确保你......
  • 思科路由器的DHCP配置3
    #路由技术基础##任务三路由器的DHCP配置3##1为路由器设置主机名称和接口IP地址Router(config)#hostnameRouter-ARouter-A(config)#intg0/0Router-A(config-if)#ipadd192.168.2.1255.255.255.0Router-A(config-if)#noshutdown#2DHCP服务器的配置Router-A(config......
  • 在Kali(Debian)系统上安装docker&docker-compose并给docker配置socks代理
    在Kali(Debian)系统上安装docker&docker-compose并给docker配置socks代理安装docker方法一:使用kali官方的安装方式(经测试,安装的docker版本为20.0)参考链接如下InstallingDockeronKaliLinux由于现在dockerhub的镜像站都挂了(可能?),为了方便的配置代理拉取镜像,推荐使用方......
  • 项目管理工具Maven的简单配置示例
    Maven是一个强大的项目管理工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。以下是一些关于Maven的具体例子,涵盖了项目配置、依赖管理、插件使用等方面:1.Maven项目基础配置Maven项目的基础配置通常体现在pom.xml文件中,该文件是Maven项目的核......
  • zabbix服务器和客户端连接配置
    zabbix服务器和客户端连接配置1.安装环境说明本例中安装zabbix开源软件和zabbix运行所需的中间件和数据库apache、php和postgres,软件版本信息如下:软件版本zabbixZabbix6.4.0apachehttpd-2.4.57aprapr-1.7.4apr-util1.6.3php8.2.6sqlite-autoconf......