>  기사  >  운영 및 유지보수  >  Nginx 네트워크 연결 구성 항목은 무엇입니까?

Nginx 네트워크 연결 구성 항목은 무엇입니까?

coldplay.xixi
coldplay.xixi원래의
2020-06-29 16:55:103056검색

Nginx 네트워크 연결 구성 항목에는 다음이 포함됩니다. 1. HTTP 헤더 읽기 시간 초과 2. HTTP 패킷 본문 읽기 시간 초과 3. 응답 전송 시간 초과 4. 시간 초과 연결 옵션 재설정

Nginx 네트워크 연결 구성 항목은 무엇입니까?

Nginx 네트워크 연결 구성 항목은 다음과 같습니다.

1. HTTP 헤더 읽기 시간 초과

구문: ​​

client_header_timeout time(默认单位:秒);

기본값:

client_header_timeout 60;

구성 블록: http, 서버, 위치 http、server、location

客户端与服务器建立连接后将开始接收HTTP头部,在这个过程中,如果在一个时间间隔(超时时间)内没有读取到客户端发来的字节,则认为超时,并向客户端返回408 ("Request timed out")响应。

推荐教程:nginx快速入门教程

2、读取HTTP包体的超时时间

语法:

client_body_timeout time(默认单位:秒);

默认:

client_body_timeout 60;

配置块:http、server、location

此配置项与client_header_timeout相似,只是这个超时时间只在读取HTTP包体时才有效。

3、发送响应的超时时间

语法:

send_timeout time;

默认:

send_timeout 60;

配置块:http、server、location

这个超时时间是发送响应的超时时间,即Nginx服务器向客户端发送了数据包,但客户端一直没有去接收这个数据包。如果某个连接超过send_timeout定义的超时时间,那么Nginx将会关闭这个连接。

4、 重置超时连接选项

语法:

reset_timeout_connection on | off;

默认:

reset_timeout_connection off;

配置块:http、server、location

连接超时后将通过向客户端发送RST包来直接重置连接。这个选项打开后,Nginx会在某个连接超时后,不是使用正常情形下的四次握手关闭TCP连接,而是直接向用户发送RST重置包,不再等待用户的应答,直接释放Nginx服务器上关于这个套接字使用的所有缓存(如TCP滑动窗口)。相比正常的关闭方式,它使得服务器避免产生许多处于FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT状态的TCP连接。

注意,使用RST重置包关闭连接会带来一些问题,默认情况下不会开启。

5、lingering_close

语法:

lingering_close off | on | always;

默认:

lingering_close on;

配置块:http、server、location

该配置控制Nginx关闭用户连接的方式。always表示关闭用户连接前必须无条件地处理连接上所有用户发送的数据。off表示关闭连接时完全不管连接上是否已经有准备就绪的来自用户的数据。on是中间值,一般情况下在关闭连接前都会处理连接上的用户发送的数据,除了有些情况下在业务上认定这之后的数据是不必要的。

6、lingering_time

语法:

lingering_time time;

默认:

lingering_time 30s;

配置块:http、server、location

lingering_close启用后,这个配置项对于上传大文件很有用。上文讲过,当用户请求的Content-Length大于max_client_body_size配置时,Nginx服务会立刻向用户发送413(Request entity too large)响应。但是,很多客户端可能不管413返回值,仍然持续不断地上传HTTP body,这时,经过了lingering_time设置的时间后,Nginx将不管用户是否仍在上传,都会把连接关闭掉。

7、 lingering_timeout

语法:

lingering_timeout time;

默认:

lingering_timeout 5s;

配置块:http、server、location

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

8、对某些浏览器禁用keepalive功能

语法:

keepalive_disable [ msie6 | safari | none ]...

默认:

keepalive_disable  msie6 safari

配置块:http、server、location

HTTP请求中的keepalive功能是为了让多个请求复用一个HTTP长连接,这个功能对服务器的性能提高是很有帮助的。但有些浏览器,如IE 6和Safari,它们对于使用keepalive功能的POST请求处理有功能性问题。因此,针对IE 6及其早期版本、Safari浏览器默认是禁用keepalive功能的。

8、 keepalive超时时间

语法:

keepalive_timeout time(默认单位:秒);

默认:

keepalive_timeout 75;

配置块:http、server、location

一个keepalive 连接在闲置超过一定时间后(默认的是75秒),服务器和浏览器都会去关闭这个连接。当然,keepalive_timeout配置项是用来约束Nginx服务器的,Nginx也会按照规范把这个时间传给浏览器,但每个浏览器对待keepalive的策略有可能是不同的。

10、一个keepalive

클라이언트가 서버와 연결을 설정한 후 HTTP 헤더 수신을 시작합니다. 이 과정에서 일정 시간(타임아웃 시간) 내에 클라이언트로부터 바이트를 읽지 않으면 타임아웃된 것으로 간주됩니다. , 클라이언트에 408("요청 시간 초과") 응답을 반환합니다.

추천 튜토리얼: nginx 빠른 시작 튜토리얼

🎜🎜2. HTTP 패킷 본문 읽기 시간 초과 🎜🎜구문:🎜
keepalive_requests n;
🎜기본값:🎜
keepalive_requests 100;
🎜구성 블록: http, 서버, 위치🎜🎜이 구성 항목은 client_header_timeout과 유사하지만 이 시간 제한은 HTTP 패킷 본문을 효율적으로 읽을 때만 적용된다는 점이 다릅니다. . 🎜🎜3. 응답 전송 시간 초과🎜🎜구문: ​​🎜
tcp_nodelay on | off;
🎜기본값: 🎜
tcp_nodelay on;
🎜구성 블록: http, server, location🎜🎜이 시간 초과는 응답 전송 시간 초과, 즉 Nginx입니다. 서버가 클라이언트에 데이터 패킷을 보냈지만 클라이언트는 데이터 패킷을 받지 못했습니다. 연결이 send_timeout에 정의된 시간 제한을 초과하면 Nginx는 연결을 닫습니다. 🎜🎜4. 시간 초과 연결 옵션 재설정🎜🎜구문: ​​🎜
tcp_nopush on | off;
🎜기본값: 🎜
tcp_nopush off;
🎜구성 블록: http, 서버, 위치🎜🎜연결 시간이 초과되면 RST 패킷이 다음으로 전송됩니다. 클라이언트에서 직접 연결을 재설정하세요. 이 옵션이 활성화되면 Nginx는 특정 연결 시간이 초과된 후 TCP 연결을 종료하기 위해 일반적인 4방향 핸드셰이크를 사용하지 않고 대신 RST 재설정 패킷을 사용자에게 직접 보내지 않습니다. 이 소켓에서 사용하는 모든 캐시(예: TCP 슬라이딩 창)에 대해 사용자의 응답을 확인하고 Nginx 서버를 직접 해제합니다. 일반 종료 방법과 비교하여 서버가 FIN_WAIT_1, FIN_WAIT_2, TIME_WAIT 상태에서 많은 TCP 연결 생성을 방지할 수 있습니다. 🎜🎜RST 재설정 패키지를 사용하여 연결을 닫으면 일부 문제가 발생할 수 있으며 기본적으로 활성화되지 않습니다. 🎜🎜5. lingering_close🎜🎜구문: ​​🎜rrreee🎜기본값: 🎜rrreee🎜구성 블록: http, 서버, 위치🎜🎜이 구성은 Nginx가 사용자 연결을 닫는 방법을 제어합니다. 항상은 연결의 모든 사용자가 보낸 데이터가 사용자 연결을 닫기 전에 무조건 처리되어야 함을 의미합니다. off는 연결을 닫을 때 연결에 대한 사용자의 준비된 데이터가 있는지 여부에 상관하지 않음을 의미합니다. on은 중간 값입니다. 정상적인 상황에서는 연결을 종료하기 전에 사용자가 전송한 데이터가 처리됩니다. 단, 비즈니스에서 이후의 데이터가 불필요하다고 판단하는 경우는 제외됩니다. 🎜🎜6. lingering_time🎜🎜구문: ​​🎜rrreee🎜기본값: 🎜rrreee🎜구성 블록: http, 서버, 위치🎜🎜lingering_close가 활성화되었습니다. 이 구성 항목이 유용합니다. 대용량 파일 업로드에 유용합니다. 위에서 언급한 것처럼 사용자가 요청한 Content-Length가 max_client_body_size 구성보다 큰 경우 Nginx 서비스는 즉시 413(요청 엔터티가 너무 큼) 응답을 사용자에게 보냅니다. 그러나 많은 클라이언트는 413 반환 값에 관계없이 계속해서 HTTP 본문을 업로드할 수 있습니다. 이때 lingering_time 설정이 지나면 Nginx는 사용자의 업로드 여부에 관계없이 연결을 닫습니다. 🎜🎜7. lingering_timeout🎜🎜구문: ​​🎜rrreee🎜기본값: 🎜rrreee🎜구성 블록: http, server, location🎜🎜lingering_close가 적용된 후, 연결을 닫기 전 , 사용자가 보낸 데이터가 서버에 도달하는지 여부를 감지합니다. lingering_timeout 이후에 읽을 수 있는 데이터가 없으면 연결이 직접 닫힙니다. 그렇지 않으면 연결이 닫히기 전에 연결을 읽고 삭제해야 합니다. 🎜🎜8. 일부 브라우저에서는 keepalive 기능을 비활성화합니다.🎜🎜구문: ​​🎜rrreee🎜기본값: 🎜rrreee🎜구성 블록: http, server, location🎜🎜HTTP 요청의 keepalive 기능은 다중용입니다. 요청은 긴 HTTP 연결을 재사용합니다. 이 기능은 서버 성능을 향상시키는 데 매우 유용합니다. 그러나 IE 6 및 Safari와 같은 일부 브라우저에서는 keepalive 기능을 사용한 POST 요청 처리에 기능적 문제가 있습니다. 따라서 IE 6 및 이전 버전의 경우 Safari 브라우저에서는 Keepalive 기능이 기본적으로 비활성화되어 있습니다. 🎜🎜8. keepalive 시간 초과 🎜🎜구문: ​​🎜rrreee🎜기본값: 🎜rrreee🎜구성 블록: http, 서버, 위치🎜🎜Keepalive 연결이 다음 시간 동안 유휴 상태입니다. 특정 기간 일정 시간(기본값은 75초)이 지나면 서버와 브라우저 모두 연결을 종료합니다. 물론 keepalive_timeout 구성 항목은 Nginx 서버를 제한하는 데 사용됩니다. Nginx도 사양에 따라 이 시간을 브라우저에 전달하지만 브라우저마다 keepalive를 처리하는 전략이 다를 수 있습니다. 🎜🎜10. keepalive 긴 연결에서 허용되는 최대 요청 수🎜🎜구문: ​​🎜rrreee🎜기본값: 🎜
keepalive_requests 100;

配置块:http、server、location

一个keepalive连接上默认最多只能发送100个请求。

11、 tcp_nodelay

语法:

tcp_nodelay on | off;

默认:

tcp_nodelay on;

配置块:http、server、location

确定对keepalive连接是否使用TCP_NODELAY选项。

<span style="font-family:Microsoft Yahei, Hiragino Sans GB, Helvetica, Helvetica Neue, 微软雅黑, Tahoma, Arial, sans-serif">12、</span>tcp_nopush

语法:

tcp_nopush on | off;

默认:

tcp_nopush off;

配置块:http、server、location

在打开sendfile选项时,确定是否开启FreeBSD系统上的TCP_NOPUSH或Linux系统上的TCP_CORK功能。打开tcp_nopush后,将会在发送响应时把整个响应包头放到一个TCP包中发送。

위 내용은 Nginx 네트워크 연결 구성 항목은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.