Nginx的配置文件为一个纯文本文件,整个配置文件以块的形式组织。main、events、http、server、location.一个http模块中可以包含多个server模块,同理一个server模块中也可以包含多个location模块。下面为Nginx的示例配置文件。

#定义Nginx运行的用户和用户组

user  nobody;

#nginx进程数,建议设置为等于CPU总核心数

worker_processes  1;

#进程文件

pid nginx.pid;

#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]

error_log  logs/error.log  notice;

#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。

worker_rlimit_nofile 65535;

#工作模式与连接数上限

events {

#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。

    worker_connections  65535;

#单个进程最大连接数(最大连接数=连接数*进程数)

    use epoll;

}

#设定http服务器

http {

    include       mime.types;   #文件扩展名与文件类型映射表

    default_type  application/octet-stream; #默认文件类型

#日志记录格式

    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"';

   #日志名称,和日志记录格式采用main

   access_log  logs/access.log  main;

   #允许客户端请求的最大单文件字节数。

   client_max_body_size20M;

   #该指令用于设置客户端请求的Header头缓冲区大小,默认值为4KB。

   client_header_buffer_size    4k;

   #设置用于读取大客户机请求头文件的最大数量和大小。

   large_client_header_buffers  4 8k;

   client_header_timeout  10; #指定客户端请求头读取超时时间。

   client_body_timeout    10; #指定客户端请求主体读取超时时间。

   send_timeout           10; #指定响应客户端的超时时间。

   #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。

   sendfile         on;

   tcp_nopush       on; #防止网络阻塞

   tcp_nodelay      on; #防止网络阻塞

   keepalive_timeout  60; #长连接超时时间,单位是秒。

  

   gzip on; #开启gzip压缩输出。

   gzip_min_length  1k; #最小压缩文件大小。

   gzip_http_version 1.1; #压缩版本。

   gzip_buffers     4 8k; #压缩缓冲区。

   gzip_comp_level 2;  #压缩等级。

   #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。

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

   gzip_vary on;  #如果指令gzip,gzip_static,或gunzip活跃,启用插入“Vary: Accept-Encoding响应标头字段。

  

  

  #定义虚拟主机开始的关键字。

   server {

        listen 80;  #指定虚拟机的服务端口。

        server_name www.jason1.com;  #用来指定ip地址或者域名。

        access_log logs/host.access.log main;  #设置虚拟主机的访问日志存放路径,main指定日志输出格式。

        location / {  

                index index.html;                   #指定访问的默认首页。

                root /usr/local/nginx/html/jason1;  #设置虚拟机的网页个目录,该目录可以为绝对路径也可以为相对目录。

        }

        error_page  404              /404.html;    #指定各种错误返回页面,

自定义的404页面必须大于512字节,否则可能会出现IE默认的404页面,且页面必须放于根目录下。   

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   /usr/local/nginx/html;

        }

location /status {

                stub_status on;                                      #设置为on,表示启动stubstatus的工作状态统计功能(在1.7.5之前的版本,该参数必须指定参数on。1.7.5之后版本只需指定stub_status)。

                access_log /usr/local/nginx/logs/status.log;         #用来指定stubstatus模块的访问日志。

                auth_basic "NginxStatus";                            #开启使用“HTTP基本认证”协议的用户名密码验证。 指定的参数被用作 域。 参数off可以取消继承自上一个配置等级 auth_basic 指令的影响。

                auth_basic_user_file /usr/local/nginx/conf/htpasswd;} #指定认证的密码文件。

        

        location = /favicon.ico {

                log_not_found off;  ##默认为on:启用或禁用404等错误日志。

                access_log off;

        }                

        location ~ /\.ht {   #禁止访问 .htxxx 文件。

            deny  all;

        }

    }


}