博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx基本配置
阅读量:4960 次
发布时间:2019-06-12

本文共 7467 字,大约阅读时间需要 24 分钟。

基本配置如下:

 

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}

 

 

转载于:https://www.cnblogs.com/fjyy11/p/11229135.html

你可能感兴趣的文章
Spring Cloud是怎么运行的?
查看>>
12 联结表
查看>>
数字三角形
查看>>
NGUI 减少drawcall规则
查看>>
三元表达,匿名函数
查看>>
前端笔记-基础笔记
查看>>
【LeetCode & 剑指offer刷题】查找与排序题6:33. Search in Rotated Sorted Array(系列)
查看>>
GNU/Linux超级本ZaReason Ultralap 440体验
查看>>
将github上托管的代码 在我的域名下运行
查看>>
【Manthan, Codefest 18 (rated, Div. 1 + Div. 2) C】Equalize
查看>>
【codeforces 767A】Snacktower
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
查看>>
Ognl中“%”、“#”、“$”详解
查看>>
我对应用软件——美团的看法
查看>>
我最喜欢的 5 个 Gedit 插件
查看>>
OOoLatex:在 OpenOffice.org 中拔出 Latex 公式
查看>>
linu学习第二天:文件系统相关操作
查看>>
执行了的程序,才是你的程序.
查看>>
在AxureRP8中实现广告文字滚动效果
查看>>
jQuery获取CSS样式中的颜色值的问题
查看>>