Nginx配置参数说明

worker_processes

用于设置Nginx的 worker process进程的数量。正常情况下,一个Nginx会有一个 master process进程,由该进程按照该参数的设置来启动相应数量的work process进程。默认的值为auto,Nginx实例会自动启动与操作系统cpu数量相同的work process进程数。当nginx添加了SSL证书时,最好要打开多个worker进程。SSL握手会进行硬盘I/O操作。 所以打开多个worker进程有利于性能的提升。

worker_connections

这个参数在events模块中。它指定了一个worker进程在同一时间可以处理的最大请求数。默认值是1024;web服务器同时处理的请求数并不等于它同时服务的客户端数量。一个浏览器会打开多个并发连接来下载网页的各个部分,如图片、脚本等等。而且不同的浏览器对同一个网页打开的并发连接数量也会有所不同

worker_rlimit_nofile

由于每一个socket都会打开一个文件描述符,所以服务器可以同时处理连接数量受到系统文件描述符数量的限制。如果nginx打开的socket数量超过了文件描述符的数量,那么在error.log文件中会出现too many opened files错误。我们可以用下面的命令来查看文件描述符的数量:

$ ulimit -n

Nginx worker进程默认的用户名是www-data或nginx,用户www-data所拥有的文件描述符的数量要大于worker进程数量与worker_connections之乘积。一般可以设置为65535;

 multi_accept

这个参数在events模块中。multi_accept可以让nginx worker进程尽可能多地接受请求。它的作用是让worker进程一次性地接受监听队列里的所有请求,然后处理。如果multi_accept的值设为off,那么worker进程必须一个一个地接受监听队列里的请求。默认multi_accept的值为off,如果web服务器面对的是一个持续的请求流,那么启用multi_accept可能会造成worker进程一次接受的请求大于worker_connections指定可以接受的请求数。这就是overflow,这个overflow会造成性能损失,overflow这部分的请求不会受到处理。

use

这个参数在events模块中。事件驱动模型,值为select|poll|kqueue|epoll|resig,一般默认为epoll,是 Nginx 支持的高性能事件驱动库之一。是公认的非 常优秀的事件驱动模型。

error_log

该参数用于启用并设置错误日志的保存位置和严重性级别,是调试Nginx服务的重要手段,可以在全局区、httpserverlocation上下文(模块)中进行设置,日志级别包括debug调试消息。info信息性消息。notice公告,warn警告,error处理请求时出错。crit关键问题。需要立即采取行动。alert -警报。必须立即采取行动。emerg紧急情况。系统处于无法使用的状态。例如:error_log  /var/log/nginx/domain.error.log warn;

access_log

每当处理客户请求时,Nginx都会在访问日志中生成一个新事件记录。每个事件记录都包含一个时间戳,并包含客户端和所请求资源的各种信息。访问日志可以显示访问者的位置,访问者的访问的页面等。log_format指令允许您定义日志的格式。access_log指令启用并设置日志文件的保存位置和使用的格式。可以在httpserverlocation指令的上下文中启用访问日志。为获得更好的可维护性,建议为每个Nginx的虚拟主机设置一个单独的访问日志文件。在server指令中设置的access_log指令将覆盖在http指令中设置的access_log。默认情况下,Nginx主配置文件中的http指令配置了全局访问日志格式。

 Nginx缓冲区相关设置参数

proxy_max_temp_file_size、proxy_buffers等等,具体可以参考:https://www.cnblogs.com/xiewenming/p/8023090.html,如果相关参数设置不正确,会参数警告日志:“an upstream response is buffered to a temporary file”。

 selinux的配置

setrlimit(RLIMIT_NOFILE, 65535) failed (1: Operation not permitted) 问题,是因为nginx的参数 worker_rlimit_nofile 65535,而操作系统的参数ulimit -n的值与之不同,但是因为selinux的安全机制,httpd进程无法修改该参数值,所以报错。

解决办法:执行 setsebool -P httpd_setrlimit 1 ,然后重启操作系统。

client_max_body_size

client_max_body_size 默认 1M,表示客户端发送给服务器的请求体所允许的最大尺寸,在“Content-Length”请求头中指定。如果请求的正文大于client_max_body_size的值,一定是失败的,HTTP协议会报错 413 Request Entity Too Large。如果需要上传大文件,一般需要修改该值。

client_body_buffer_size

这个参数用于设置客户端(一般为用户端浏览器)请求正文数据的占用内存的大小,例如 1024K,如果请求的数据小于该值,则将数据先在内存中存储,再发送给客户端;如果请求的数据大于该值,并且小于client_max_body_size参数值,则会将数据先存储在临时文件中,临时文件的目录一般是 /var/lib/nginx/tmp/client_body/ ,并且会报警告“a client request body is buffered to a temporary file”,可以通过参数client_body_temp 来设置。所以配置的client_body_temp地址,一定让执行的Nginx的用户组有读写权限。否则,当传输的数据大于client_body_buffer_size,写进临时文件失败会报错。

 proxy_buffer_size

 这个配置指令,用于设置从被代理服务器接收的头部缓冲区的大小,默认值是 4k 或 8k。这个缓冲区用于存储响应头(header),而响应体则存储在由 proxy_buffers 和 proxy_busy_buffers_size 指令定义的缓冲区中。proxy_buffer_size参数可以写在httpserver 或 location 块中,具体取决于想要应用这个设置的范围。http(全局范围)、server(服务器范围)、location(路径范围),如果在多个代码块定义,则优先级为location > server > http。

proxy_buffers 和 proxy_busy_buffers_size

 这两个指令用于设置从被代理服务器接收的响应体的缓冲区的大小,proxy_buffers 指定了缓冲区的数量和单个缓冲区的大小,而 proxy_busy_buffers_size 则定义了当Nginx开始发送响应到客户端之前,可以使用的“忙碌”缓冲区的大小,通常设置为 proxy_buffers 中单个缓冲区大小的倍数。
proxy_buffers number size;
  • number:缓冲区的数量。
  • size:每个缓冲区的大小。

 proxy_max_temp_file_size 和 proxy_temp_path

这两个指令与代理响应体的大文件处理相关。当响应体的大小超过 proxy_buffers 和 proxy_busy_buffers_size 所定义的缓冲区大小时,Nginx会将数据写入临时文件。proxy_max_temp_file_size 定义了临时文件的最大尺寸,而 proxy_temp_path 则指定了临时文件的存储路径。
 
 
 
 
 

 

posted @ 2023-03-09 18:33  荒野游侠  阅读(946)  评论(0编辑  收藏  举报