标签:开启 exp request limit 限制 nofile error 相同 ie6
基本配置如下:
user www www;
worker_processes auto; #一般默认为1,也可以为cpu数量,或者auto,自动调整
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
error_log /data/logs/error_nginx.log error;
pid /var/run/nginx.pid;
worker_rlimit_nofile 51200; #这个指令是指当一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。
现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535
events {
use epoll; #使用的网络io模型,Linux默认用epoll,FreeBSD推荐用kqueue
worker_connections 51200; #每个工作进程允许同时连接的最大数量,(nginx最大的连接数:Maxclient = work_processes * worker_connections)
multi_accept on; #如果multi_accept被禁止了,nginx一个工作进程只能同时接受一个新的连接。否则,一个工作进程可以同时接受所有的新连接。如果nginx使用kqueue连接方法,那么这条指令会被忽略,因为这个方法会报告在等待被接受的新连接的数量
}
http {
include mime.types; ##文件扩展名与文件类型映射表
default_type application/octet-stream; #这个类型会让浏览器认为响应是普通的文件流,并提示用户下载文件
log_format log_json ‘{"time_local":"$time_local",‘
‘"@timestamp": "$time_iso8601",‘
‘"domain":"$host",‘
‘"server_addr":"$server_addr",‘
‘"http_x_forwarded_for":"$http_x_forwarded_for",‘
‘"remote_addr":"$remote_addr",‘
‘"request_method":"$request_method",‘
‘"user_agent":"$http_user_agent",‘
‘"request_uri":"$request_uri",‘
‘"http_referer":"$http_referer",‘
‘"size":$body_bytes_sent,‘
‘"request_time":$request_time,‘
‘"upstream_addr":"$upstream_addr",‘
‘"upstream_response_time":"$upstream_response_time",‘
‘"upstream_status":"$upstream_status",‘
‘"upstream_connect_time":"$upstream_connect_time",‘
‘"scheme":"$scheme",‘
‘"status":$status}‘;
access_log /data/logs/access_nginx.log log_json;
server_names_hash_bucket_size 128; #服务器名字的hash表大小,server_name参数后面跟的域名数量大小限制
client_header_buffer_size 32k; #此指令与client_body_buffer_size类似。 它为请求头分配一个缓冲区。 如果请求头大小大于指定的缓冲区,则使用large_client_header_buffers指令分配更大的缓冲区
large_client_header_buffers 4 32k; #用来指定客户端请求中较大的消息头的缓存最大数量和大小,“4”为个数,“128”为大小,最大缓存为4个32KB。这些缓冲区仅在缺省缓冲区不足时按需分配。 当处理请求或连接转换到保持活动状态时,释放缓冲区
client_max_body_size 1024m; #此指令设置NGINX能处理的最大请求主体大小。 如果请求大于指定的大小,则NGINX发回HTTP 413(Request Entity too large)错误。 如果服务器处理大文件上传,则该指令非常重要。默认情况下,该指令值为1m
client_body_buffer_size 10m; #Nginx分配给请求数据的Buffer大小,如果请求的数据小于client_body_buffer_size直接将数据先在内存中存储。如果请求的值大于client_body_buffer_size小于client_max_body_size,就会将数据先存储到临时文件中,在哪个临时文件中呢?
client_body_temp 指定的路径中,默认该路径值是/tmp/.所以配置的client_body_temp地址,一定让执行的Nginx的用户组有读写权限。否则,当传输的数据大于client_body_buffer_size,写进临时文件失败会报错。
sendfile on; #开启高效文件传输模式,将tcp_nopush和tcp_nodely两个指令设置为on,用于防止网络阻塞
tcp_nopush on; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
keepalive_timeout 120; #一个http产生的tcp连接在传送完最后一个响应后,经过多少秒后才开始关闭这个连接
server_tokens off; #修改或隐藏Nginx的版本号
fastcgi_connect_timeout 300; #指定连接到后端FastCGI的超时时间,FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等
fastcgi_send_timeout 300; #向fastCGI请求的超时时间,这个值是指已经完成两次握手后向fastCGI传送的超时时间
fastcgi_read_timeout 300; #接收fastCGI应答的超时时间,这个值已经完成两次握手后接收fastCGI应答的超时时间
fastcgi_buffer_size 64k; #指定读取fastCGI应答第一部分需要用多大的缓冲区,一般第一部分应答不会超过1k,一般设置为64k
fastcgi_buffers 8 128k; #指定本地需要用多少和多大的缓冲区来缓冲fastCGI的应答
fastcgi_busy_buffers_size 128k; #默认值是fastcgi_buffers的两倍
fastcgi_temp_file_write_size 128k; #在写入fastcgi_temp_path是用多大的数据块,默认值是fastcgi_buffers两倍
fastcgi_intercept_errors on; #这个指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。
#Gzip Compression
vhost_traffic_status_zone;
gzip on; #开启gzip压缩输出
gzip_buffers 16 8k; #表示申请16个单位为8k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
gzip_comp_level 6; #压缩等级,设置gzip的压缩级别,取值[1-9],数值越大压缩率越高,压缩时消耗的资源越多,通常合理取值是3-5
gzip_http_version 1.1; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_min_length 256; #用于设置允许压缩的页面最小字节数,页面字节数从header头的content-length中获取,默认值是0,不管页面多大都进行压缩,建议设置成大于1k的字节数,小于1k可能会越压越大最小压缩文件大小
gzip_proxied any;
Nginx作为反向代理的时候启用,根据某些请求和应答来决定是否在对代理请求的应答启用gzip压缩,是否压缩取决于请求头中的“Via”字段,指令中可以同时指定多个不同的参数,意义如下:
|
gzip_vary on; #可让前端的缓存服务器缓存经过gzip压缩的页面,例如,用squid缓存经过nginx压缩的数据 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)"; #IE6对Gzip不怎么友好,不给它Gzip了
#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; #为1,000个元素定义了一个缓存。 inactive参数配置到期时间为20秒。 没有必要为该指令设置非活动时间段,默认情况下,非活动时间段为60秒。
启用此指令将存储以下信息的缓存:
|
open_file_cache_valid 30s; #指令定义时间段(以秒为单位),之后将重新验证open_file_cache中的元素。默认情况下,60秒后重新检查元素
open_file_cache_min_uses 2; #NGINX将在非活动时间段之后从高速缓存中清除元素。 此指令可用于配置最小访问次数以将元素标记为活动使用。 默认情况下,最小访问次数设置为1次或更多次
open_file_cache_errors on; #NGINX可以缓存在文件访问期间发生的错误。但是这需要通过设置open_file_cache_errors指令来启用。 如果启用错误缓存,则在访问资源(不查找资源)时,NGINX会报告相同的错误。默认情况下,错误缓存设置为关闭。
######################## default ############################添加hosts后访问一个不存在的域名会显示default页面
server {
listen 10080;
listen 80;
server_name _;
access_log /data/logs/default_access_nginx.log log_json;
root /usr/local/nginx/html;
index index.html index.htm index.php;
location / {
default_type text/html ;
expires 7d;
return 200 ‘hello world!!!‘; #频繁访问时返回设置值
}
location /nginx_status { #nginx状态监控
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
# location ~ [^/]\.php(/|$) {
# #fastcgi_pass remote_php_ip:9000;
# fastcgi_pass unix:/dev/shm/php-cgi.sock;
# fastcgi_index index.php;
# include fastcgi.conf;
# }
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;
}
location /vt_status { #流量统计,有页面
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
allow 127.0.0.1;
allow 10.0.0.0/8;
deny all;
}
}
########################## vhost #############################引入其他文件,分开写利于维护
include vhost/*.conf;
include vhost/internal/*.conf;
include upstream/*.conf;
}
日志格式:
{"time_local":"22/Jul/2019:03:42:58 +0800","@timestamp": "2019-07-22T03:42:58+08:00","domain":"www.baidu.com","server_addr":"xx.xx.x.x","http_x_forwarded_for":"-","remote_addr":"10.23.10.28","request_method":"GET","user_agent":"curl/7.29.0","request_uri":"/idfd/v1/server/live","http_referer":"-","size":17,"request_time":0.011,"upstream_addr":"10.10.31.73:8081","upstream_response_time":"0.011","upstream_status":"200","upstream_connect_time":"0.001","scheme":"http","status":200}
标签:开启 exp request limit 限制 nofile error 相同 ie6
原文地址:https://www.cnblogs.com/fjyy11/p/11229135.html