user nginx; #使用linux用户分组执行nginx
worker_processes 4;#nginx 启动后的进程数,通常跟服务器的内核挂钩 如:2核4进程 01 10 01 10; 4核2进程 0101 1010;
worker_cpu_affinity 0001 0010 0100 1000;#对应服务器不同的内核
error_log /var/log/nginx_error.log warn; #全局的日志文件路径
pid /var/run/nginx.pid; #记录nginx主进程文件的路径
# 一个nginx进程打开的最多文件描述符数目,可通过ulimit -n 查看
worker_rlimit_nofile 65535;
events
{
# 使用epoll的I/O模型,用这个模型来高效处理异步事件
#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
use epoll;
# 每个进程允许的最多连接数
worker_connections 1024;
# 当一个新连接到达时,如果激活了accept_mutex,那么多个Worker将以串行方式来处理,其中有一个Worker会被唤醒,其他的Worker继续保持休眠状态;
# 如果没有激活accept_mutex,那么所有的Worker都会被唤醒,不过只有一个Worker能获取新连接,其它的Worker会重新进入休眠状态,这就是「惊群问题」。
# accept_mutex off;
#如果multi_accept被禁止了,nginx一个工作进程只能同时接受一个新的连接。否则,一个工作进程可以同时接受所有的新连接。如果nginx使用kqueue连接方法,那么这条指令会被忽略,因为这个方法会报告在等待被接受的新连接的数量
# multi_accept on;
}
http
{
#map 的主要作用是创建自定义变量,通过使用 nginx 的内置变量,去匹配某些特定规则,如果匹配成功则设置某个值给自定义变量。 而这个自定义变量又可以作于他用
autoindex off; #开启目录列表访问,合适下载服务器,默认关闭
include mime.types; #文件扩展名与文件类型映射表,浏览器跟服务器规定的content-types 对应文件信息
default_type application/octet-stream;#默认为文件下载
keepalive_timeout 30; #长连接超时时间,单位是秒
server_names_hash_bucket_size 256; #服务器名字的hash表大小
client_header_buffer_size 32k; # 客户请求头缓冲大小 nginx默认会用client_header_buffer_size这个buffer来读取header值,如果 header过大,它会使用large_client_header_buffers来读取
large_client_header_buffers 4 32k;
client_body_buffer_size 5m; #Nginx分配给请求数据的Buffer大小,如果请求的数据小于client_body_buffer_size直接将数据先在内存中存储。如果请求的值大于client_body_buffer_size小于client_max_body_size,就会将数据先存储到临时文件中,在哪个临时文件中呢?
client_body_temp 指定的路径中,默认该路径值是/tmp/.
client_max_body_size 20m;#客户端请求服务器最大允许大小;
# 隐藏响应头中的有关操作系统和web server(Nginx)版本号的信息
server_tokens off;
#sendfile是个比 read 和 write 更高性能的系统接口, 不过需要注意的是,sendfile 是将 in_fd 的内容发送到 out_fd 。而 in_fd 不能是 socket , 也就是只能文件句柄。 所以当 Nginx 是一个静态文件服务器的时候,开启 SENDFILE 配置项能大大提高 Nginx 的性能。 但是当 Nginx 是作为一个反向代理来使用的时候,SENDFILE 则没什么用了,因为 Nginx 是反向代理的时候。 in_fd 就不是文件句柄而是 socket,此时就不符合 sendfile 函数的参数要求了。
sendfile on;
#在nginx中,tcp_nopush配置与tcp_nodelay“互斥”。它可以配置一次发送数据包的大小。也就是说,数据包累积到一定大小后就发送。
#在nginx中tcp_nopush必须和sendfile配合使用。
tcp_nopush on; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
fastcgi_intercept_errors on; #是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息
fastcgi_connect_timeout 60; #NGINX与后端FastCGI server连接超时时间
fastcgi_send_timeout 60; #指定nginx向后端传送请求超时时间(指已完成两次握手后向fastcgi传送请求超时时间)
fastcgi_read_timeout 60; #指定nginx接受后端fastcgi响应请求超时时间 (指已完成两次握手后nginx接受fastcgi响应请求超时时间)
fastcgi_buffer_size 256k; #nginx读取fastcgi响应第一部分需要用多大的缓冲区
fastcgi_buffers 8 256k; #指nginx需要用多大的缓冲区缓冲fastcgi的应答请求(整个应答),如果一个php脚本所产生的页面大小为512kb,那么会分配2个256kb缓冲区来缓存,如果页面大于512kb,
那么大于256kb的部分会缓存到fastcgi_temp指定的路径中,但是因为内存中数据处理远快于磁盘, 所以这个值应该为站点中php所产生的页面大小的中间值
fastcgi_busy_buffers_size 512k; #整个数据请求需要多大的缓存区,建议设置为fastcgi_buffers值的两倍
fastcgi_temp_file_write_size 512k;#写入缓存文件使用多大的数据块,默认值是fastcgi_buffer值的2倍
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript application/javascript text/css application/xml application/octet-stream image/jpeg image/gif image/png;
gzip_vary on;
#代理服务端不要主要主动关闭客户端连接
proxy_ignore_client_abort on;
log_format main '$remote_addr\t$msec\t[$time_local]\t$request\t'
'"$status"\t$body_bytes_sent\t"$http_referer"\t'
'"$http_user_agent"\t"$http_q_ua"\t"$http_x_forwarded_for"\t'
'"$upstream_addr"\t$request_time\t$host';
###
#$remote_addr #记录访问网站的客户端地址
#$remote_user #远程客户端用户名
#$time_local #记录访问时间与时区
#$request #用户的http请求起始行信息
#$status #http状态码,记录请求返回的状态码,例如:200、301、404等
#$body_bytes_sent #服务器发送给客户端的响应body字节数
#$http_referer #记录此次请求是从哪个连接访问过来的,可以根据该参数进行防盗链设置。
#$http_user_agent #记录客户端访问信息,例如:浏览器、手机客户端
#$http_x_forwarded_for #当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置
#open_file_cache max=65535 inactive=60s; #表示设置缓存文件的最大数目为 65535, 超过此数字后 Nginx 将按照 LRU 原则丢弃冷数据
#open_file_cache_valid 80s; #表示每 80s检查一次缓存中的文件元信息是否是最新的,如果不是则更新之
#open_file_cache_min_uses 2; #inactive=60s 与 open_file_cache_min_uses 2 表示如果在 60s内某文件被访问的次数低于 2 次,那就将它从缓存中删除
#open_file_cache_errors on; #换成文件错误
limit_req_status 503;#设置拒绝请求的返回值
#nginx 限流访问 https://www.cnblogs.com/biglittleant/p/8979915.html
include /etc/nginx/conf.d/*.conf;
}