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; ----------不记录日志
}
}
}