Nginx安装完毕后,会产生相应的安装目录,根据前面的安装路径,Nginx的配置文件路径为/usr/local/nginx/conf,其中nginx .conf为Nginx的主配置文件。这里重点介绍下ninx.onf这个配置文件。
Nginx配置文件主要分成四个部分: main (全局设置)、server (主机设置). upstream (负载均衡服务器设置)和location ( URL匹配特定位置的设置)。main 部分设置的命令将影响其他所有设置; server 部分的命令主要用于指定主机和端口; upstream命令主要用于负载均衡,设置一系列的后端服务器; location 部分用于匹配网页位置。这四者之间的关系式:server继承main, location 继承server, upstream 既不会继承其他设置也不会被继承。
在这四个部分当中,每个部分都包含若干命令,这些命令主要包含Nginx的主模块命令事件模块命令、HTTP核心模块命令,同时每个部分还可以使用其他HTTP模块命令,例如Htp SSL模块、HtpGzip Static模块和Http Addition模块等。
下面通过一个Nginx配置实例详细介绍nginx.conf每个命令的含义。一个配置好的nginx.conf 文件内容如下:

user nobody nobody
worker_processes   4;
error_log   logs/error.log   notice;
pid         logs/nginx.pid;
worker_rlimit_nofile   65535;
events{
   use epoll;
   worker_connections   65535;
       }

这段代码用于对Ngin的全局属性进行配置。每个参数的含义如下。

user :主模块命令,指定Nginx的woker进程运行用户以及用户组,默认由nobody worker账号运行。
worker_processes :指定Nginx要开启的进程数。
error_log:用来定义全局错误日志文件。日志输出级别有debug. info . notice.warn、eror. crit 可供选择,其中,debug输出日志最为详细,而crit输出日志最少。
pid:用来指定进程id的存储文件位置。
** worker_rlimit_nofile**: 用于指定一个nginx进程可以打开的最多文件描述符数目,这里是1024,最大是65535,需要使用命令“ulimit -n 65535”在系统中进行设置。
worker_connections:用于指定一个nginx进程可以打开的最多文件描述符数目,这里是65535,需要使用"ulimit -n 65535"在系统中进行设置
events :设定Nginx的工作模式及连接数上限。其中参数“use”用来指定Nginx的工作模式,Nginx 支持的工作模式有select、poll、 kqueue、 epoll、 rtsig 和/dev/poll。其中select和poll都是标准的工作模式,kqucue 和epoll是高效的工作模式,对于Linux系统,epoll 工作模式是首选。而参数“worker conections”用于定义Nginx每个进程的最大连接数,默认是1024。最大客户端连接数由worker pocees和worker cnnetions 决定,即max_clien=worker_posesose*worker_cnnections进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统合“ulimit -n 65536”后worker connections 的设置才能生效。

http {
include   con/mime.type;
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_referer""$sent_htt_content_range"';
access_log    log/www.ixdba.net.access.log   main;

client_max_body_size   20m;
client_header_buffer_size   32k;
large_client_header_buffers   4   128k;
sendfile   on;
tcp_nopush   on;
tcp_nodelay   on;
Keepalive_timcout   60;
client_header_timeout   10;
send_timeout   10;
}

include:主模块命令,实现对配置文件所包含文件的设定,可以减少主配置文件的复杂度。类似于Apache中的include方法。
default_type: 属于HTTP核心模块命令,这里设定默认类型为二进制流,也就是当 文件类型未定义时使用这种方式,例如,在没有配置PHP环境时,Nginx是不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口。
log_ format: 用于指定Nginx日志的输出格式。main为此日志输出格式的名称,可 以在下面的accesslog命令中引用。
client_max_body_size: 用来设置允许客户端请求的最大的单个文件字节数。
client_header_buffer_size:用于指定来自客户端请求头的headerbuffer大小。对于大多数请求,IKB的缓冲区大小已经足够,如果自定义了消息头或有更大的cokie,可以增加缓冲区大小。这里设置为32KB。
**large_client_header_buffers:**用来指定客户端请求中较大的消息头的缓存最大数量和大小,“4”为个数,“128K”为大小,最大缓存量为4个128KB
sendfile: 用于开启商效文件传输模式,将tcp_nopush和tcp_nodeay两个命令设置为"on”用于防止网络阻塞。
Keepalive_timcout :设置客户端连接保持活动的超时间。在超过这个时间之后,服务器会关闭该连接。
client_header_ timeout :设置客户端请求头读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx 将返回"Request time out (408)"错误。
client_body_timeout:设置客户端请求主体读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx 将返回“ Request time out (408)错误,默认值是60。
sendtimeout:指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx 将会关闭连接。

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_type text/plain application/x-javascript text/css application/xml;
gzip_vary on;

gzip:用于设置开启或者关闭gzip模块,“gzip on” 表示开启GZIP压缩,实时压缩输出数据流
gzip_min_length: 设置允许压缩的页面最小字节数,页面字节数从header头的Contenl-Length中获取。默认值是0,不管页面多大都进行压缩。建议设置成大于1KB的字节数,小于1KB可能会越压缩越大。
gzip_buffers:表示申请4个单位为16KB的内有作为压缩结果流缓存,默认是申请与原始数据大小相同的内存空间来存储GZIP压缩结果。
gzip_http_version :用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。
gzip_ comp_ level :用来指定GZIP压缩比,1表示压缩比最小,处理速度最快; 9表示压缩比最大,传输速度快,但处理速度最慢,也比较消耗CPU资源。
gzip_types: 用来指定压缩的类型,无论是否指定,“text/html"”类型总是会被压缩的
gzip_vary: 让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩数据

server{
listen 80;
server_name 192.168.2.188 www.ixdba.net;
index index.html index.htm index.jsp;
root /web/wwwroot/www.ixdba.net
charsset gb2312;
access_log logs/www.ixdba.net.access.log main;
}

server:定义虚拟主机开始的关键字。
listem:用于指定虚拟主机的服务端口。
server_name:用来指定IP地址或域名,多个域名之间用空格分开。
index:用于设定访问的默认首页地址。
root:用于设定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径。
charset:用于设置网页的默认编码格式。
access_log:用来指定此虚拟主机的访问口志有放路径,最后的main用于指定访问

location / NginxStatus{
					syub_status   on;
					access_log   logs/NginxStatus.log;
					auth_basic   "NginxStatus";
					auth_basic_user_file   ../htpasswd;
}

stub_status:设置为“on”表示启用StubStatus的工作状态统计功能。
access_log:用来指定StubStatus模块的访问日志文件。
auth_basic: 是Nginx的一种认证机制。
auth_basic_ user_file: 用来指定认证的密码文件。
由于Nginx的auth_basic认证采用的是与Apache兼容的密码文件,因此需要用Apache的htpasswd命令来生成密码文件,例如,要添加一个 webadmin用户,可以使用下面的方式生成密码文件:

/usr/local/apache/bin/htpasswd -c /usr/local/nginx/conf/htpasswd webadmin

会得到以下信息

New password:

在输人密码之后,系统会要求再次输入密码。确认密码正确之后成功添加用户。
要查看nginx的运行状态可以输人http://ip/ NginxStatus,再次输入刚刚创建的用户名和密码,可以看到以下信息:

Active connections: 1
server accepts handled requests
393411  393411  393799
Reading:0 Writing:1 Waiting:0

其中,“Active connections”表示当前活跃的连接数,第三行的三个数字表示Nginx当前总共处理了393 411个连接,成功创建393 411次握手,总共处理了393 799个请求。最后一行的“Reading"表示Nginx读取到客户端Header信息数,“Writing”表小Nginx返回给客户端的Header信息数,“Waiting”表示Nginx已经处理完,正在等候下一次请求命令时的驻留连接数。

最后,设置虚拟主机的错误信息返回页面,代码如下:

error page     404   /404. html/;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root  html;
    }
}
}

通过error page命令可以定制各种错误信息的返回页面。在默认情况下,Nginx 会在主目录的html目录中查找指定的返回页面。需要特别注意的是,这些错误信息的返回页面的大小定要超过512KB,否则会被IE浏览器替换为IE默认的错误页面。