我是靠谱客的博主 爱撒娇汽车,最近开发中收集的这篇文章主要介绍第二篇 nginx 作为http服务器及详细配置项上,Event等属性配置关系详解Nginx 专栏目录1. 主配置文件2. 配置节点关系3.各配置项含义3.1 events,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Nginx 专栏目录

  • 第一篇 nginx介绍和下载安装
  • 第二篇 nginx 作为http服务器及详细配置项上,Event等属性配置关系详解
  • 第三篇 nginx 作为http服务器及详细配置项下,附8种负载均衡策略
  • 第四篇 nginx 配置的实际应用:伪静态,反向代理,动静分离,防盗链,图片缓存,gzip图片压缩等

nginx 首先是一个http 服务器 , 虽然现在多数是使用在反向代理和负载均衡方面

1. 主配置文件

主配置文件默认包含以下内容:
在这里插入图片描述

2. 配置节点关系

其中他们的关系为:

nginx.conf 关系

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。

  1. 其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。

  2. 对于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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部