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_size 20M;
#该指令用于设置客户端请求的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指定日志输出格式。
server_name_in_redirect off;
location / {
index index.html; #指定访问的默认首页。
root /usr/local/nginx/html/jason1; #设置虚拟机的网页个目录,该目录可以为绝对路径也可以为相对目录。
}
error_page 404 /404.html; #指定各种错误返回页面。
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 ~ /\.ht {
deny all;
}
}
}