1. main 全局配置
Nginx在运行时与具体业务功能(比如http服务或者email服务代理)无关的一些参数 , 比如工作进程数 , 运行的身份等 。
- woker_processes 2
- 在配置文件的顶级main部分 , worker角色的工作进程的个数 , master进程是接收并分配请求给worker处理 。这个数值简单一点可以设置为cpu的核数grep ^processor /proc/cpuinfo | wc -l , 也是 auto 值 , 如果开启了ssl和gzip更应该设置成与逻辑CPU数量一样甚至为2倍 , 可以减少I/O操作 。如果nginx服务器还有其它服务 , 可以考虑适当减少 。
- worker_cpu_affinity
- 也是写在main部分 。在高并发情况下 , 通过设置cpu粘性来降低由于多CPU核切换造成的寄存器等现场重建带来的性能损耗 。如worker_cpu_affinity 0001 0010 0100 1000; (四核) 。
- worker_connections 2048
- 写在events部分 。每一个worker进程能并发处理(发起)的最大连接数(包含与客户端或后端被代理服务器间等所有连接数) 。nginx作为反向代理服务器 , 计算公式 最大连接数 = worker_processes * worker_connections/4 , 所以这里客户端最大连接数是1024 , 这个可以增到到8192都没关系 , 看情况而定 , 但不能超过后面的worker_rlimit_nofile 。当nginx作为http服务器时 , 计算公式里面是除以2 。
- worker_rlimit_nofile 10240
- 写在main部分 。默认是没有设置 , 可以限制为操作系统最大的限制65535 。
- use epoll
- 写在events部分 。在linux操作系统下 , nginx默认使用epoll事件模型 , 得益于此 , nginx在Linux操作系统下效率相当高 。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue 。在操作系统不支持这些高效模型时才使用select 。
与提供http服务相关的一些配置参数 。例如:是否使用keepalive啊 , 是否使用gzip进行压缩等 。
- sendfile on
- 开启高效文件传输模式 , sendfile指令指定nginx是否调用sendfile函数来输出文件 , 减少用户空间到内核空间的上下文切换 。对于普通应用设为 on , 如果用来进行下载等应用磁盘IO重负载应用 , 可设置为off , 以平衡磁盘与网络I/O处理速度 , 降低系统的负载 。
- keepalive_timeout 65 : 长连接超时时间 , 单位是秒 , 这个参数很敏感 , 涉及浏览器的种类、后端服务器的超时设置、操作系统的设置 , 可以另外起一片文章了 。长连接请求大量小文件的时候 , 可以减少重建连接的开销 , 但假如有大文件上传 , 65s内没上传完成会导致失败 。如果设置时间过长 , 用户又多 , 长时间保持连接会占用大量资源 。
- send_timeout : 用于指定响应客户端的超时时间 。这个超时仅限于两个连接活动之间的时间 , 如果超过这个时间 , 客户端没有任何活动 , Nginx将会关闭连接 。
- client_max_body_size 10m
- 允许客户端请求的最大单文件字节数 。如果有上传较大文件 , 请设置它的限制值
- client_body_buffer_size 128k
- 缓冲区代理缓冲用户端请求的最大字节数
这个模块实现的是nginx作为反向代理服务器的功能 , 包括缓存功能(另见文章)
- proxy_connect_timeout 60
- nginx跟后端服务器连接超时时间(代理连接超时)
- proxy_read_timeout 60
- 连接成功后 , 与后端服务器两个成功的响应操作之间超时时间(代理接收超时)
- proxy_buffer_size 4k
- 设置代理服务器(nginx)从后端realserver读取并保存用户头信息的缓冲区大小 , 默认与proxy_buffers大小相同 , 其实可以将这个指令值设的小一点
- proxy_buffers 4 32k
- proxy_buffers缓冲区 , nginx针对单个连接缓存来自后端realserver的响应 , 网页平均在32k以下的话 , 这样设置
- proxy_busy_buffers_size 64k
- 高负荷下缓冲大小(proxy_buffers*2)
- proxy_max_temp_file_size
- 当proxy_buffers放不下后端服务器的响应内容时 , 会将一部分保存到硬盘的临时文件中 , 这个值用来设置最大临时文件大小 , 默认1024M , 它与proxy_cache没有关系 。大于这个值 , 将从upstream服务器传回 。设置为0禁用 。
推荐阅读
- Nginx配置文件nginx.conf详解
- 计算机网络常用的命令行指令
- 普通避孕套能延时吗 延时避孕套可以经常用吗
- 路由器常用的四种桥接方式
- 阿里架构师分享技术干货Spring+Redis+SpringBoot+Nginx等实践
- 电脑里这些不常用的接口你都知道啥功能吗?里这些不常用的接口你都知道啥功能吗?
- 离iPhone配件越来越远,watchOS 7支持Apple Watch本地运行快捷指令
- 收藏了 西门子SCL语言编程,常用指令介绍
- Linux配置mysql,tomcat,Nginx 开机自启动的几个方式
- nginx的负载均衡如何配置