Nginx 部分配置详解

#nginx运行工作进程个数,一般设置cpu的核心或者核心数x2
worker_processes  12;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;

events {
	#nginx采用epoll事件模型,处理效率高
	use epoll;
	#单个worker进程允许客户端最大连接数(65535为端口数量,超出部分无法连接)
    worker_connections  20480;
    #告诉nginx收到一个新连接通知后接受尽可能多的连接,默认是on,设置为on后,多个worker按串行方式来处理连接,也就是一个连接只有一个worker被唤醒,其他的处
    #于休眠状态,设置为off后,多个worker按并行方式来处理连接,也就是一个连接会唤醒所有的worker,直到连接分配完毕,没有取得连接的继续休眠。
    #当你的服务器连接数不多时,开启这个参数会让负载有一定的降低,但是当服务器的吞吐量很大时,为了效率,可以关闭这个参数
    multi_accept off;
}

http {
    #表示 客户端请求服务器最大允许的数据大小
    client_body_buffer_size 20m;
    #关闭缓冲,防止下载文件不完整
    proxy_buffering off;

    #读取fastcgi应答第一部分需要多大缓冲区,该值表示使用1个64kb的缓冲区读取应答第一部分(应答头),可以设置为fastcgi_buffers选项缓冲区大小
    fastcgi_buffer_size 128k;

    #指定本地需要多少和多大的缓冲区来缓冲fastcgi应答请求,一般该值应该为站点中php/java脚本所产生页面大小中间值
    fastcgi_buffers 4 128k;

    ##默认值是fastcgi_buffer的2倍
    fastcgi_busy_buffers_size 256k;

    #设置用于处理请求压缩的缓冲区数量和大小。比如32 4K表示按照内存页
    #(one memory page)大小以4K为单位(即一个系统中内存页为4K),申请32倍的内存空间。建议此项不设置,使用默认值。
    gzip_buffers 16 8k;

    #Nginx不会尝试获取到后端服务器所有响应数据之后才返回给客户端,Nginx 会尽快把数据传给客户端,在数据传完之前,Nginx 接收到的最大缓存大小不能超过
    proxy_buffer_size 64k;

    #处理后端响应,一般是代理服务器请求后端服务的response。如果这个buffer不够大,会引起磁盘IO,response的body内容会先写入临时目录中。
    proxy_buffers 4 128k;

    #处理后端繁忙请求时 缓冲器的大小
    proxy_busy_buffers_size 256k;

    #连接超时时间
    keepalive_timeout 240;

    #是指nginx进程向fastcg链接超时时间
    fastcgi_connect_timeout 600;

    #是指nginx进程向fastcgi进程发送request的整个过程的超时时间
    fastcgi_send_timeout 600;

    #是指fastcgi进程向nginx进程发送response的整个过程的超时时间
    fastcgi_read_timeout 600;

    #nginx跟后端服务器连接超时时间(代理连接超时)
    proxy_connect_timeout 600;

    #这个指定设置了发送请求给upstream服务器的超时时间。超时设置不是为了整个发送期间,
    #而是在两次write操作期间。如果超时后,upstream没有收到新的数据,nginx会关闭连接
    proxy_send_timeout 1200;

    #说明 该指令设置与代理服务器的读超时时间。它决定了nginx会等待多长时间来获得请求的响应。这个时间不是获得整个response的时间,而是两次reading操作的时间
    proxy_read_timeout 1200;

	#并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的。
	server_tokens off; 

	# 媒体类型,include 只是一个在当前文件中包含另一个文件内容的指令
    include       mime.types;

    #默认媒体类型,如: application/octet-stream;
    default_type  application/octet-stream;

    #设置nginx是否存储访问日志。关闭这个选项可以让读取磁盘IO操作更快
    access_log  off;

    #sendfile 可以让sendfile()发挥作用。sendfile()可以在磁盘和TCP socket之间互相拷贝数据(或任意两个文件描述符)。
    #Pre-sendfile是传送数据之前在用户空间申请数据缓冲区。之后用read()将数据从文件拷贝到这个缓冲区,write()将缓冲区数据写入网络。
    #sendfile()是立即将数据从磁盘读到OS缓存。因为这种拷贝是在内核完成的,sendfile()要比组合read()和write()以及打开关闭丢弃缓冲更加有效
    sendfile        on;

    #必须在sendfile开启模式才有效,防止网路阻塞,积极的减少网络报文段的数量
    #(将响应头和正文的开始部分一起发送,而不一个接一个的发送。)
    tcp_nopush     on;

    #client_header_timeout 和client_body_timeout 设置请求头和请求体(各自)的超时时间。我们也可以把这个设置低些。
    client_header_timeout 30;
    client_body_timeout 30;

    #指定客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,nginx就会关闭连接
    send_timeout 5;

    #告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间。
    reset_timedout_connection on; 

    #设置nginx服务允许用户最大上传数据大小
    client_max_body_size 20m;

    #是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量
    gzip            on;

    #设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取,
    #默认值是0,不管页面多大都进行压缩,建议设置成大于1000,如果小与1K可能会越压越大
    gzip_min_length 1000;

    #压缩比例,用来指定GZIP压缩比,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但是处理慢,也比较消耗CPU资源。
    gzip_comp_level 5;

    #expired - 启用压缩,如果header头中包含 "Expires" 头信息
	#no-cache - 启用压缩,如果header头中包含 "Cache-Control:no-cache" 头信息
	#no-store - 启用压缩,如果header头中包含 "Cache-Control:no-store" 头信息
	#private - 启用压缩,如果header头中包含 "Cache-Control:private" 头信息
	#auth - 启用压缩 , 如果header头中包含 "Authorization" 头信息
    gzip_proxied    expired no-cache no-store private auth;

    #可以压缩的文件类型
    gzip_types      text/plain application/xml application/javascript text/css application/octet-stream;

    #varyheader支持,改选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过nginx压缩的数据。
    gzip_vary		on;

    #引入文件
    include services/*.conf;

}

发布了34 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_36623327/article/details/104334763