#nginx用户及用户组
user www-data www-data;
#工作进程一般等于cpu核心数
worker_processes auto;
# nginx默认是没有开启利用多核cpu的配置的。需要通过增加worker_cpu_affinity配置参数来充分利用多核cpu,cpu是任务处理,当计算最费时的资源的时候,cpu核使用上的越多,性能就越好。
worker_cpu_affinity auto;
#错误日志存放路径
error_log /data/logs/nginx_logs/error.log ;
#pid存放路径
pid logs/nginx.pid;
#指定进程可以打开的最大描述符:数目。
worker_rlimit_nofile 51200;
events {
use epoll;
#使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定。
worker_connections 51200;
#每个工作进程的最大连接数量。根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为。worker_processes*worker_connections
multi_accept on;
# 告诉nginx收到一个新连接通知后接受尽可能多的连接。
}
http {
include mime.types;
# 只是一个在当前文件中包含另一个文件内容的指令。这里我们使用它来加载稍后会用到的一系列的MIME类型。
default_type application/octet-stream;
# 设置文件使用的默认的MIME-type。
log_format main '$proxy_add_x_forwarded_for - [$time_local] "$http_host" "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$request_time" "$upstream_response_time" "$upstream_addr" "$http_user_agent" ';
# 设置日志格式
sendfile on;
# 指定是否使用sendfile系统调用来传输文件。
# sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝。
tcp_nopush on;
# 是要等数据包累积到一定大小才发送
underscores_in_headers on;
# nginx引用header变量时使用带下划线的变量
keepalive_timeout 120;
# 指定每个 TCP 连接最多可以保持多长时间。
server_tokens off;
#隐藏版本号
tcp_nodelay on;
#禁用了Nagle 算法
proxy_read_timeout 1800;
# 连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
#fastcgi_connect_timeout 300;
#指定nginx与后端fastcgi server连接超时时间
#fastcgi_send_timeout 300;
#指定nginx向后端传送请求超时时间(指已完成两次握手后向fastcgi传送请求超时时间)
#fastcgi_read_timeout 300;
#指定nginx接受后端fastcgi响应请求超时时间 (指已完成两次握手后nginx接受fastcgi响应请求超时时间)
#fastcgi_buffer_size 64k;
#指定nginx读取fastcgi响应第一部分需要用多大的缓冲区,这个值表示将使用一个64kb的缓冲区响应第一部分应答(应答头)可以设置为fastcgi_buffers缓存区大小
#fastcgi_buffers 4 64k;
#指nginx需要用多大的缓冲区缓冲fastcgi的应答请求(整个应答),如果一个php脚本所产生的页面大小为256kb,那么会分配4个64kb缓冲区来缓存,如果页面大于256kb,那么大于256kb的部分会缓存到fastcgi_temp指定的路径中,但是因为内存中数据处理远快于磁盘, 所以这个值应该为站点中php所产生的页面大小的中间值, 如果站点大部分php脚本产生的页面为:256kb, 那么可以设置成成"8 16k 4 64k"
#fastcgi_busy_buffers_size 128k;
#整个数据请求需要多大的缓存区,建议设置为fastcgi_buffers值的两倍
#fastcgi_temp_file_write_size 128k;
#写入缓存文件使用多大的数据块,默认值是fastcgi_buffer值的2倍
#fastcgi_intercept_errors on;
#这个指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。
#add_header Access-Control-Allow-Origin *;
#服务器默认是不被允许跨域的。给Nginx服务器配置`Access-Control-Allow-Origin *`后,表示服务器可以接受所有的请求源(Origin),即接受所有跨域的请求。
#Gzip Compression
gzip on;
#开启gzip压缩功能
gzip_buffers 16 8k;
#设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间,param2:int(k) 后面单位是k。这里设置以8k为单位,按照原始数据大小以8k为单位的16 申请内存
gzip_comp_level 6;
#设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大;等级1-9,最小的压缩最快 但是消耗cpu
gzip_http_version 1.1;
#识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码
gzip_min_length 256;
#设置允许压缩的页面最小字节(从header头的Content-Length中获取) ,当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩。建议大于1k
gzip_proxied any;
#nginx做为反向代理时启用,off(关闭所有代理结果的数据的压缩),expired(启用压缩,如果header头中包括"Expires"头信息),no-cache(启用压缩,header头中包含"Cache-Control:no-cache"),
no-store(启用压缩,header头中包含"Cache-Control:no-store"),private(启用压缩,header头中包含"Cache-Control:private"),no_last_modefied(启用压缩,header头中不包含"Last-Modified"),no_etag(启用压缩,如果header头中不包含"Etag"头信息),auth(启用压缩,如果header头中包含"Authorization"头信息)
gzip_vary on;
#启用应答头"Vary: Accept-Encoding"
gzip_types
text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
text/javascript application/javascript application/x-javascript
text/x-json application/json application/x-web-app-manifest+json
text/css text/plain text/x-component
font/opentype application/x-font-ttf application/vnd.ms-fontobject
image/x-icon;
#制定压缩的类型,线上配置时尽可能配置多的压缩类型!
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
#配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
proxy_request_buffering off;
#可以使得Nginx及时没有读取完client body的时候,也能立刻连接upstream。换句话说,Nginx来了收到client的Header,就往upstream 连接并且发送。并且,来了部分的body,也会立刻转发到upstream,即所谓的流式上传。
proxy_max_temp_file_size 0;
# 指定当响应内容大于proxy_buffers指定的缓冲区时, 写入硬盘的临时文件的大小. 如果超过了这个值, Nginx将与Proxy服务器同步的传递内容, 而不再缓冲到硬盘. 设置为0时, 则直接关闭硬盘缓冲.
add_header X-Frame-Options ALLOWALL;
#X-Frame-Options头主要是为了防止站点被别人劫持、iframe引入 ( ALLOWALL; #允许所有域名iframe, DENY; #不允许任何域名iframe,包括相同的域名 SANEORIGIN; #允许相同域名iframe,如a.test.com允许b.test.com ALLOW-FROM uri; #允许指定域名iframe,)
server_names_hash_bucket_size 128;
# hash表可保存服务器名字的数量(32的倍数)
client_header_buffer_size 32k;
#设置nginx允许接收的客户端请求内容的最大值,及客户端请求Header头信息中设置的Content-Lenth大最大值。如果超出该指令设置的最大值,nginx将返回“Request Entity Too Large”的错误信息(HTTP的413错误码)
large_client_header_buffers 4 32k;
#设置nginx读取客户端请求Header头信息的超时时间,如果超过该指令设置的时间,nginx将返回"Requet time out"错误信息(HTTP的408错误码)
client_max_body_size 1024m;
#设置客户端请求的Header头缓冲区大小,默认为4K。客户端请求行不能超过设置的第一个数,请求的Header头信息不能大于设置的第二个数,否则会报"Request URI too large"(414)或“Bad request”(400)错误。如果客户端的Cookie信息较大,则需增加缓冲区大小
client_body_buffer_size 10m;
#这个directive设定了request body的缓冲大小。如果body超过了缓冲的大小,那么整个body或者部分body将被写入一个临时文件。如果Nginx被设置成使用文件缓冲而不使用内存缓冲,那么这个dirctive就无效。client_body_buffer_size在32位系统上默认是8k,在64位系统上默认是16k。可以在http, server 和 location模块中指定
#If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save some latency.
open_file_cache max=1000 inactive=20s;
#缓存文件描述符的元数据,如大小,修改时间,权限等等。缓存清理使用LRU算法。
open_file_cache_valid 30s;
#检验缓存中元素有效性的频率;默认为60s。
open_file_cache_min_uses 2;
#NGINX将在非活动时间段之后从高速缓存中清除元素。在非活动时长访问的次数超过了指定次数,则不淘汰;否则淘汰。
open_file_cache_errors on;
#NGINX可以缓存在文件访问期间发生的错误。
vhost_traffic_status_zone;
#nginx流量监控模块
#client_max_body_size 100m;
########################## default ############################
server {
listen 8099;
server_name _;
root html;
index index.html index.htm;
access_log off;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 10.10.11.0/24;
allow 172.16.0.0/22;
allow 221.224.214.35;
deny all;
}
location /bztvts {
auth_basic "Restricted";
auth_basic_user_file nginx.auth;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
access_log off;
}
location /goaccess {
alias /home/wwwlog/awstats;
autoindex on;
}
location /goaccess.monthly {
alias /data/wwwlog/awstats;
autoindex on;
}
location /status {
check_status;
access_log off;
allow 10.1.168.0/24;
allow 172.16.0.0/22;
allow 221.224.214.35;
allow 114.118.1.66;
allow 114.118.2.3;
deny all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
location ~ /\.ht {
deny all;
}
}
############################ vhost #############################
include vhost.d/*.conf;
}