码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx基本配置

时间:2019-07-23 00:08:47      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:开启   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”字段,指令中可以同时指定多个不同的参数,意义如下:
      expired - 启用压缩,如果header头中包含 "Expires" 头信息
      no-cache - 启用压缩,如果header头中包含 "Cache-Control:no-cache" 头信息
      no-store - 启用压缩,如果header头中包含 "Cache-Control:no-store" 头信息
      private - 启用压缩,如果header头中包含 "Cache-Control:private" 头信息
      no_last_modified - 启用压缩,如果header头中不包含 "Last-Modified" 头信息
      no_etag - 启用压缩 ,如果header头中不包含 "ETag" 头信息
      auth - 启用压缩 , 如果header头中包含 "Authorization" 头信息
      any - 无条件启用压缩
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秒。
 

   启用此指令将存储以下信息的缓存:

  1. 打开的文件描述符和相关元数据,如大小,修改时间等
  2. 文件和目录的存在与查找相关的任何错误,例如“权限被拒绝”,“文件未找到”等
  3. 缓存定义固定大小,并且在溢出期间,它移除最近最少使用(LRU)元素。
  4. 缓存在一段时间不活动之后逐出元素。 默认情况下禁用该指令。

  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}

 

 

Nginx基本配置

标签:开启   exp   request   limit   限制   nofile   error   相同   ie6   

原文地址:https://www.cnblogs.com/fjyy11/p/11229135.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!