概述
Nginx 专栏目录
- 第一篇 nginx介绍和下载安装
- 第二篇 nginx 作为http服务器及详细配置项上,Event等属性配置关系详解
- 第三篇 nginx 作为http服务器及详细配置项下,附8种负载均衡策略
- 第四篇 nginx 配置的实际应用:伪静态,反向代理,动静分离,防盗链,图片缓存,gzip图片压缩等
nginx 首先是一个http 服务器 , 虽然现在多数是使用在反向代理和负载均衡方面
1. 主配置文件
主配置文件默认包含以下内容:
2. 配置节点关系
其中他们的关系为:
3.各配置项含义
user是个主模块指令,指定Nginx Worker进程运行用户以及用户组,默认由nobody/nginx 账号运行。
worker_processes是个主模块指令,指定了Nginx要开启的进程数。一般默认即可,多核建议指定和CPU的数量一致。
worker_rlimit_nofile 用于绑定worker进程和CPU, Linux内核2.4以上可用。
这个没用好可能出现假死或者502等错误
error_log是个主模块指令,用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
pid是个主模块指令,用来指定进程pid的存储文件位置。
3.1 events
events事件指令是设定Nginx的工作模式及连接数上限:
use 是个事件模块指令,用来指定Nginx的工作模式。如:
events{
use epoll;
worker_connections 1024;
}
Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。
-
其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。
-
对于Linux系统,epoll工作模式是首选,并且在新版本的nginx 中是默认模式。
worker_connections也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024。
最大客户端连接数由worker_processes和worker_connections决定,
即Max_client=worker_processes*worker_connections
。
3.2 http
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
include是个主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度。相当于对应文件直接复制在配置文件中的这个位置,同时它可以使用通配符
default_type属于HTTP核心模块指令,这里设定默认类型为二进制流,属于HTTP规范中Content-Type的一种
log_format 实现了对日志的格式设定 并且命名为main
方便在后面使用 ,同时日志格式中可以使用的变量还有很多,如:
$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"
access_log 就是指定了日志文件地点 /var/log/nginx/access.log
并使用了前面定义的日志格式 main
sendfile on 表示开启,可以off 系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝。
sendfile 不仅减少了数据复制操作,它也减少了上下文切换。 https://blog.csdn.net/hairetz/article/details/6549306
tcp_nopush on 表示开启,可以off ,当使用sendfile函数时,tcp_nopush才起作用
,它和指令tcp_nodelay是互斥的。会设置调用tcp_cork方法,tcp_cork是linux下tcp/ip传输的一个标准,一般情况下,在tcp交互的过程中,当应用程序接收到数据包后马上传送出去,不等待,而tcp_cork选项是数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞,已经是默认了。
tcp_nodelay on | off 开启 或关闭nginx使用TCP_NODELAY选项的功能。
这个选项仅在将连接转变为长连接的时候才被启用。(译者注,在upstream发送响应到客户端时也会启用)。(TCP_CORK和 TCP_NODELAY是互相排斥的)。
如果需要提供网络的传输效率,应该减少小包的传输,使用TCP_CORK来做汇总传输,在利用sendfile来提高效率;
但如果是交互性的业务,那应该让任意小包可以快速传输,tcp_nodelay 打开,关闭Nagle算法,提高包的传输效率。
keepalive_timeout 65 表示连接创建后保持多久,目的是为了保持长连接 减少创建tcp连接带来的性能损耗
gzip on 表示开启,启动HttpGzip模块。这个模块支持在线实时压缩输出数据流。
开启之后还可以设置以下参数:
- gzip_min_length设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,不管页面多大都进行压缩。建议设置成大于1K的字节数,小于1K可能会越压越大;
- gzip_buffers表示申请4个单位为16K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果;
- gzip_http_version用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可;
- gzip_comp_level用来指定GZIP压缩比,1 压缩比最小,处理速度最快;9 压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源;
- gzip_types用来指定压缩的类型,无论是否指定,“text/html”类型总是会被压缩的;
- gzip_vary选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩的数据。
除此之外还可以定义:
- client_max_body_size用来设置允许客户端请求的最大的单个文件字节数,可能在文件上传上面需要在把这个调大;
- client_header_buffer_size用于指定来自客户端请求头的headerbuffer大小。对于大多数请求,1K的缓冲区大小已经足够,如果自定义了消息头或有更大的Cookie,可以增加缓冲区大小。这里设置为32K;
- large_client_header_buffers用来指定客户端请求中较大的消息头的缓存最大数量和大小, “4”为个数,“128K”为大小,最大缓存量为4个128K;
- client_header_timeout设置客户端请求头读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误;
- client_body_timeout设置客户端请求主体读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误,默认值是60;
- send_timeout指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。
还有关于 upstream ,server , location 等负载均衡 反向代理 内容则放下一节讲
最后
以上就是爱撒娇汽车为你收集整理的第二篇 nginx 作为http服务器及详细配置项上,Event等属性配置关系详解Nginx 专栏目录1. 主配置文件2. 配置节点关系3.各配置项含义3.1 events的全部内容,希望文章能够帮你解决第二篇 nginx 作为http服务器及详细配置项上,Event等属性配置关系详解Nginx 专栏目录1. 主配置文件2. 配置节点关系3.各配置项含义3.1 events所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复