nginx.conf 中各配置项的含义

目录

1、nginx文件的结构如下

2、nginx各个配置项说明

pid

user

worker_processes

ssl_engine(ssl硬件加速)

error_log(日志位置和日志级别)

worker_rlimit_nofile

event模块儿

3、http模块中各个配置项


  • 1、nginx文件的结构如下

...              #全局块

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}
  1. 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
  2. events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
  3. http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  4. server块:配置虚拟主机的相关参数,一个http中可以有多个server。 location块:配置请求的路由,以及各种页面的处理情况。

2、nginx各个配置项说明

  • pid

执行nginx进程运行文件存放地址

  • user

语法:user username[groupname] 默认:user nobody nobody
  1. user用于设置master进程启动后,fork出的worker进程运行在那个用户和用户组下。当按照"user username;"设置时,用户组名与用户名相同。
  2. 若用户在configure命令执行时,使用了参数--user=usergroup 和 --group=groupname,此时nginx.conf将使用参数中指定的用户和用户组。
  3. Nginx worker进程运行的用户及用户组
  • worker_processes

#配置Nginx进程生成的worker process数,auto 表示Nginx进程自动检测生成数。
worker_processes 1;

每个worker进程都是单线程的进程,他们会调用各个模块以实现多种多样的功能。如果这些模块不会出现阻塞式的调用,那么,有多少CPU内核就应该配置多少个进程,反之,有可能出现阻塞式调用,那么,需要配置稍多一些的worker进程。

  • ssl_engine(ssl硬件加速)

ssl_engine device;

用户可以用OpneSSL提供的命令来查看是否有ssl硬件加速设备:openssl engine -t 

  • error_log(日志位置和日志级别)

#只是配置日志位置
error_log /var/log/nginx/error.log;

#同时配置日志位置和日志级别
error_log /var/log/nginx/error.log crit;
  • worker_rlimit_nofile

指定此进程可以打开的最大文件描述符的值。 

  • event模块儿

events {
#仅对指定的客户端输出debug级别的日志
#这个设置项实际上属于事件类配置,因此必须放在events{……}中才会生效。它的值可以是IP地址或者是CIRD地址。
debug_connection[IP|CIDR]

#这样,仅仅以上IP地址的请求才会输出debug级别的日志,其他请求仍然沿用error_log中配置的日志级别。

#注意:在使用debug_connection前,需确保在执行configure时已经加入了--with-debug参数,否则不会生效。
#debug_connection 10.224.66.14; #或是debug_connection 10.224.57.0/24

#最大连接数
worker_connections 1024;

#设置网路连接序列化,防止惊群现象发生,默认为on
accept_mutex on;

#设置一个进程是否同时接受多个网络连接,默认为off
multi_accept on;

#事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
#use epoll;

}
  • 3、http模块中各个配置项

http模块中:log_format参数详解
1.$remote_addr与$http_x_forwarded_for 用以记录客户端的ip地址
2.$remote_user:用来记录客户端用户名称;
3.$time_local:用来记录访问时间与时区;
4.$request:用来记录请求的url与http协议;
5.$status:用来记录请求状态;成功是200, 
6.$body_bytes_s ent:记录发送给客户端文件主体内容大小;
7.$http_referer:用来记录从那个页面链接访问过来的; 
8.$http_user_agent:记录客户端浏览器的相关信息;
http
{
  #include指令将mime.types文件包含进来
  #使用命令:cat mime.types查看一下文件内容,我们发现其就是一个types结构,里面包含了各种浏览器能够识别的MIME类型以及对应类型的文件后缀名字 
  include mime.types;

  #MIME-Type指的是网络资源的媒体类型,也即前端请求的资源类型
  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';
  
#charset gb2312;
  #服务器名字的hash表的大小
  server_names_hash_bucket_size 128;
  
  #用于指定来自客户端请求头headerbuffer大小,对于大多数请求,1KB的缓冲区大小已经足够,如果自定义了消息头或有更大的cookie,可以增加缓冲区大小
  client_header_buffer_size 32k;
  
  #用来指定客户端请求中较大的消息头的缓存最大数量和大小,16为个数,256k为大小
  large_client_header_buffers 4 32k;

  #允许客户端请求的最大单文件字节数
  client_max_body_size 8m;
  
  #开启文件高效传输   
  sendfile on;

  #激活linux上的tcp cork socket模块,可以减少网络报文段数量
  tcp_nopush on;

  #语法: keepalive_timeout timeout [header_timeout],默认值: keepalive_timeout 60s;使用字段: http, server, location
  #参数1指定了客户端与服务器 keep-alive的超时时间,值为0将禁用 keep-alive功能。
  #参数2(可选)在HTTP响应头”Keep-Alive: timeout=time” 字段中设置一个值。
  keepalive_timeout 60;

  #该参数最核心的功能,就是把小包组成成大包,提高带宽利用率也就是著名的nagle算法
  tcp_nodelay on;

  #指定同FastCGI服务器的连接超时时间
  fastcgi_connect_timeout 300;
  
  #指令为上游服务器设置等待一个FastCGI进程的传送数据时间,如果有一些直到它们运行完才有输出的长时间运行的FastCGI进程,那么可以修改这个值,如果你在上有服务器的error log里面发现一些超时错误,那么可以恰当的增加这个值
  fastcgi_send_timeout 300;

  #前端FastCGI服务器的响应超时时间,如果有一些直到它们运行完才有输出的长时间运行的FastCGI进程,或者在错误日志中出现前端服务器响应超时错误,可能需要调整这个值
  fastcgi_read_timeout 300;
  
  fastcgi_buffer_size 64k;
  fastcgi_buffers 4 64k;
  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k;

  #开启gzip压缩
  gzip on;

  #设置被压缩的页面最小字节数, 0 表示不管页面大小直接压缩
  gzip_min_length 1k;

  #表示申请4个单位16k的内存作为压缩缓冲区
  gzip_buffers 4 16k;
  
  #默认1.1,支持1.0
  gzip_http_version 1.0;

  #表示压缩比,介于1和9之间,1压缩比例小,处理速度快,9压缩比例大,传输快,当前为2
  gzip_comp_level 2;
  
  #压缩的类型
  gzip_types text/plain application/x-javascript text/css application/xml;
  
  #不添加“Vary:Accept-Encding”响应头
  gzip_vary on;
 
  #limit_zone crawler $binary_remote_addr 10m;
 #下面是server虚拟主机的配置
 server
  {
    listen 80;#监听端口

    server_name localhost;#域名

    index index.html index.htm index.php;

    root /usr/local/webserver/nginx/html;#站点目录

    #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
    location ~*^.+$ {
       #root path;  #根目录
       #index vv.txt;  #设置默认页
       proxy_pass  http://域名;  #请求重定向到某处
       deny 127.0.0.1;  #拒绝的ip
       allow 172.18.5.54; #允许的ip
    }
    location ~ .*\.(php|php5)?$
    {
      #fastcgi_pass unix:/tmp/php-cgi.sock;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      include fastcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
    {
      expires 30d;
    # access_log off;
    }
    
    location ~ .*\.(js|css)?$
    {
      expires 15d;
      #access_log off;
    }
    access_log off;
  }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值