nginx配置文件详讲

930阅读 0评论2014-07-29 zhan5872
分类:系统运维


 

user  www www;                              ---------nginx运行的用户和组

worker_processes 8;                           ---------nginx的进程数,(一般等于CPU的总核数或者总核数的两倍)                                                           

                                                                        

error_log  /data1/logs/nginx_error.log  crit;       ---------指定错误日志存放的路径,错误日志记录级别可 选项为[debug | info | noticd | warn |error |crit ]
                                                   

pid        /usr/local/webserver/nginx/nginx.pid;    ---------指定pid存放的路径

#Specifies the value for maximum file descriptors that can be opened by this process. 
worker_rlimit_nofile 65535;                     ---------指定文件描述符数量(一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数,系统的值ulimit  -n                                                                                 与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit –n的值保持一致)

events                                                       ---------工作模式及连接数上限
{
  use epoll;                                                --------提高linux的io操作选项,(epoll模型是linux 2.6以上版本内核中的高性能网络I/O模型,如果这FreeBSD上,就用kqueue模型,参考事件模型有[kqueue | rtsig | epoll  | /dev/poll  |select  | poll ])


  worker_connections 65535;                  --------单个进程最大连接数(最大连接数=连接数*进程数)
}

http                                                                   ---------设定http服务器
{
  include       mime.types;                                 ---------文件扩展名与文件类型映射表(mime.types浏览器请求的文件媒体类型)


default_type  application/octet-stream;         --------默认文件类型(用来告诉浏览器请求的文件媒体类型) 

                                                 
#charset  gb2312;                                             --------设置使用的字符集,如果一个网站有多种字符集, 请不要随便设置,应该让程序员在HTML代码中通过Meta标签                                                                                          设置      

                                                     
server_names_hash_bucket_size 128;              --------服务器名字的hash表大小
client_header_buffer_size 32k;                          -------用于设置客户端请求的Headr头缓冲区大小,大部分情况1KB足够,不能超过    large_client_header_buffers缓                                                                                       冲区大小的设置        

                        

large_client_header_buffers 4 32k;              -------该指令用户设置客户端请求的Header头缓冲区 
                                                    大小,默认值为4KB

client_max_body_size 8m;                      -------设置客户端能够上传的文件大小,默认为1M
      
  sendfile on;                                --------开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载.(注意:如果图片显示不正常把这个改成off)
  

tcp_nopush     on;                          --------防止网络阻塞(该命令允许或禁止使用FreeBSD上的TCP_NOPUSH,或者linux上的TCP_CORK套接字选项)

                                                

keepalive_timeout 60;                       --------该指令可以使客户端到服务器的连接持续有效

  tcp_nodelay on;                            --------防止网络阻塞(该命令允许或禁止使用套接字选项 TCP_NODELAY,仅适用于keep-alive连接)
                                                 

#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度.

fastcgi_connect_timeout 300;                 
  fastcgi_send_timeout 300;      
  fastcgi_read_timeout 300;                    -------该指令用于设置upstream模块等待FastCGI进程发送数据的超时时间,默认值为60S.
                                                   

fastcgi_buffer_size 64k;                       -------该指令设置FastCGI服务器相应头部的缓冲区大小。通常情况下,该缓冲区大小设置等于fastcgi_buffers指令设置的一个缓冲区的大小       
  fastcgi_buffers 4 64k;                        ------该指令设置了读取FastCGI进程返回信息的缓冲区数量和大小。


  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k;

  gzip on;                                            ------开启gzip压缩,对网页文件、CSS、js、xml等启动gzip压缩,减少数据传输量,提高访问速度。


  gzip_min_length  1k;                        -----该指令允许压缩的页面最小字节数,页面字节数从header头中的content——length中进行获取。


  gzip_buffers     4 16k;                       -----设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。下面的设置代表16K为单位,按照原始数据大小以16K为                                                                      单位的4倍申请内存

 
  gzip_http_version 1.0;                      -----压缩版本(默认1.1.前端如果是squid2.5请使用1.0)
  gzip_comp_level 2;                           -----gzip压缩比,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢(传输快但比较消耗CPU)


  gzip_types       text/plain application/x-javascript text/css application/xml;

------匹配mime类型进行压缩,无论是否指定,text/html类型总是会被压缩的。


  gzip_vary on;                         

  #limit_zone  crawler  $binary_remote_addr  10m;

--------该指令定义了一个数据区,其中记录会话状态信息。定义一个叫“crawler”的记录去,总容量为10MB,以变量$binary_remote_addr作为会话的判断基准(寄一个地址一个会话)开启限制IP连接数的时候需要使用。

  server                                                               -----虚拟主机的配置
  {
    listen       80;                                                 -----监听端口
    server_name  blog.zyan.cc;                         -------定义使用blog.zyan.cc访问
    index index.html index.htm index.php;                -----定义首页索引文件的名称
    root  /data0/htdocs/blog;                           -------定义服务器的默认网站根目录的位置

    #limit_conn   crawler  20;    
                             
    location ~ .*\.(php|php5)?$                          -------默认请求
    {      
      #fastcgi_pass  unix:/tmp/php-cgi.sock;
      fastcgi_pass  127.0.0.1:9000;
      fastcgi_index index.php;
      include fcgi.conf;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$              --------图片缓存时间设置
    {
      expires      30d;
    }

    location ~ .*\.(js|css)?$                               ------js和CSS缓存时间设置
    {
      expires      1h;
    }    
  日志格式设定
    log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
              '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent" $http_x_forwarded_for';
    access_log  /data1/logs/access.log  access;                ------定义本虚拟机的访问日志
      }

  server
  {
    listen       80;
    server_name  
    index index.html index.htm index.php;
    root  /data0/htdocs/www;

    location ~ .*\.(php|php5)?$
    {      
      #fastcgi_pass  unix:/tmp/php-cgi.sock;
      fastcgi_pass  127.0.0.1:9000;
      fastcgi_index index.php;
      include fcgi.conf;
    }

    log_format  wwwlogs  '$remote_addr - $remote_user [$time_local] "$request" '
               '$status $body_bytes_sent "$http_referer" '
               '"$http_user_agent" $http_x_forwarded_for';
    access_log  /data1/logs/wwwlogs.log  wwwlogs;
  }

  server
  {
    listen  80;
    server_name  status.blog.zyan.cc;

    location / {                              ---------对“/”启用反向代理
    stub_status on;
    access_log   off;                         ----------不记录日志
    }
  }
}

上一篇:awk 统计文件中按照某列统计某列的和(sum)
下一篇:Tomcat中实现IP访问限制