0
点赞
收藏
分享

微信扫一扫

nginx系列二

代码小姐 2022-05-05 阅读 61

配置文件解析

main{ #(全局设置)
events{ #有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求
}
http{ #服务器
upstream{} #(负载均衡服务器设置:主要用于负载均衡和设置一系列的后端服务器)
server{ #(主机设置:主要用于指定主机和端口)
location{} #(URL匹配特点位置的设置)
}
}
}        

一、main 全局设置

配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

user  nobody; 
worker_processes  2;
worker_cpu_affinity 0001 0010 0100 1000;
error_log  /var/logs/nginx_error.log  crit;
pid        /usr/local/webserver/nginx/nginx.pid;
worker_rlimit_nofile 65535;

解析:

  1. #user www www;: 指定nginx进程使用什么用户启动
  2. #worker_processes 4; : 指定启动多少进程来处理请求,一般情况下设置成CPU的核数,如果开启了ssl和gzip更应该设置成与逻辑CPU数量一样甚至为2倍,可以减少I/O操作。使用grep ^processor /proc/cpuinfo | wc -l查看CPU核数。
  3. #error_log /var/logs/nginx_error.log crit;: error_log是个主模块指令,用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
  4. #pid /usr/local/webserver/nginx/nginx.pid;: 指定进程pid文件的位置。
  5. #worker_rlimit_nofile 65535;: 用于指定一个nginx进程可以打开的最多文件描述符数目,这里是65535,需要使用命令“ulimit -n 65535”来设置。

二、events模块 

events {
    use epoll;
    worker_connections  1024;
}
  1. #use epoll;use是个事件模块指令,用来指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。对于Linux系统,epoll工作模式是首选。在操作系统不支持这些高效模型时才使用select。
  2. #worker_connections 65536;每一个worker进程能并发处理(发起)的最大连接数(包含与客户端或后端被代理服务器间等所有连接数)。nginx作为反向代理服务器,计算公式 最大连接数 = worker_processes * worker_connections/4,所以这里客户端最大连接数是65536,这个可以增到到8192都没关系,看情况而定,但不能超过后面的worker_rlimit_nofile。当nginx作为http服务器时,计算公式里面是除以2。进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令ulimit -n 65536worker_connections的设置才能生效。

三、http模块

3.1 HTTP参数之客户端head缓存

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 128k;
    client_max_body_size 10m;
    client_body_buffer_size 128k;
    sendfile on ;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65; 
    client_body_timeout 60s;
    send_timeout 60s;
  1. #server_names_hash_bucket_size 128;: 服务器名字的hash表大小。
  2. #client_header_buffer_size 32k;:用来指定来自客户端请求头的header buffer 大小。对于大多数请求,1K的缓存已经足够了,如果自定义了消息头或有更大的cookie,可以增大缓存区大小。
  3. #large_client_header_buffers 4 128k;:用来指定客户端请求中较大的消息头的缓存最大数量和大小,4为个数,128k为大小,最大缓存为4个128KB。#client_max_body_size 8m; : 客户端请求的最大的单个文件字节数。
  4. #client_max_body_size 10m; : 允许客户端请求的最大单文件字节数。如果有上传较大文件,请设置它的限制值。
  5. #client_body_buffer_size 128k;: 缓冲区代理缓冲用户端请求的最大字节数。
  6. #sendfile on ; : 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,减少用户空间到内核空间的上下文切换。对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。开启 tcp_nopush on; 和tcp_nodelay on; 防止网络阻塞。
  7. #keepalive_timeout 65 : : 长连接超时时间,单位是秒,这个参数很敏感,涉及浏览器的种类、后端服务器的超时设置、操作系统的设置,可以另外起一片文章了。长连接请求大量小文件的时候,可以减少重建连接的开销,但假如有大文件上传,65s内没上传完成会导致失败。如果设置时间过长,用户又多,长时间保持连接会占用大量资源。
  8. #client_body_timeout 60s; : 用于设置客户端请求主体读取超时时间,默认是60s。如果超过这个时间,客户端还没有发送任何数据,nginx将返回Request time out(408)错误。
  9. #send_timeout : : 用于指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。

 3.2 HTTP参数之FastCGI参数

FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。

 

举报

相关推荐

0 条评论