Nginx

Nginx 知识量:8 - 22 - 84

2.2 HTTP的server部分><

客户端指令- 2.2.1 -

Nginx的客户端指令主要有以下几种:

  • GET:向指定的资源发出“查看”请求,要求返回该资源的表示。

  • POST:向指定的资源提交要被处理的数据,请求服务器进行处理(例如,提交表单或者上传文件)。数据包含在请求体中。POST请求可能会导致新资源的创建或现有资源的修改。

  • PUT:从客户端向服务器传送的数据取代指定的文档的内容。

  • DELETE:请求服务器删除指定的资源。

  • HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。

  • OPTIONS:允许客户端查看服务器的性能。

  • PATCH:对资源进行部分修改。

这些指令可以通过Nginx的URL和HTTP方法进行访问和操作。

文件I/O指令- 2.2.2 -

Nginx文件I/O指令主要包括以下几种:

  • sendfile:开启或关闭文件发送功能。当应用程序传输文件时,内核首先缓冲数据,然后将数据发送到应用程序缓冲区。使用sendfile指令可以启用或禁用这种数据传输方式。

  • directio:绕过所有操作系统缓存,直接从应用程序到磁盘进行读取和写入。这对于需要大文件或者具有较差命中率的数据非常有用,因为它可以更好地利用CPU周期并提高缓存效率。

  • directio_alignment:设置直接I/O操作的块大小。它有助于更好地管理文件系统和I/O操作。

这些指令在Nginx的配置文件中使用,可以用来优化文件的读取和写入操作,提高服务器的性能。

Hash指令- 2.2.3 -

Nginx的Hash指令用于将请求的某个字段(如IP、远程地址等)计算为哈希值,并选择一个虚拟节点作为路由的目标。具体来说,Nginx在初始化时会计算每个后端服务器的哈希值,并将其分配到一个虚拟节点上。当有请求到达时,Nginx会根据请求的字段计算哈希值,并选择最近的虚拟节点作为路由的目标。

Nginx的Hash指令可以用于实现一致性哈希算法,这是一种高效的路由算法,可以在添加或删除节点时最小化影响已有节点。它使用了虚拟节点技术,将每个实际节点映射到多个虚拟节点上,使得节点分布更加均匀。

在Nginx的配置文件中,可以使用hash指令来指定使用一致性哈希算法。例如:

hash $request_uri;

上述指令将使用请求的URI字段计算哈希值。

Socket指令- 2.2.4 -

Nginx的Socket指令用于配置Nginx与后端服务器之间的通信。具体来说,Socket指令可以配置Nginx使用的传输层协议、连接超时时间、重试次数等参数。

以下是一些常见的Socket指令:

  • proxy_pass:指定后端服务器的地址和端口号,用于将请求转发到后端服务器。

  • proxy_set_header:设置请求头信息,用于与后端服务器进行通信。

  • proxy_read_timeout:指定后端服务器读取数据的超时时间。

  • proxy_connect_timeout:指定与后端服务器建立连接的超时时间。

  • proxy_send_timeout:指定向后端服务器发送数据的超时时间。

  • proxy_buffer_size:指定代理缓冲区的大小,用于缓存从后端服务器接收的数据。

  • proxy_buffers:指定代理缓冲区的数量和大小,用于缓存从后端服务器接收的数据。

  • proxy_busy_buffers_size:指定代理缓冲区中当前被数据填充的缓冲区大小,用于限制缓存的占用空间。

  • proxy_temp_file_write_size:指定临时文件的写入大小,用于控制从后端服务器接收数据的缓冲区大小。

  • proxy_temp_path:指定临时文件的路径,用于存储从后端服务器接收的数据。

这些指令可以在Nginx的配置文件中使用,以配置Nginx与后端服务器之间的通信参数。