Nginx基础配置文件及变量详解1.基础配置文件/etc/nginx/nginx.conf#nginx运行用户usernginx;#nginx进程号,建议设置等于CPU核心总数。worker_processes1;#全局错误日志文件名和目录,错误日志级别[debug|资讯|公告|警告|错误|暴击]error_log/var/log/nginx/error.log警告;#进程文件nginx.pid所在目录pid/var/run/nginx.pid;#一个nginx进程打开的最大文件描述符数,#理论值应该是最大打开文件数(系统值ulimit-n)除以nginx进程数,#但是nginx分配请求不是均匀的,所以建议与ulimit-n的值保持一致。#worker_rlimit_nofile65535;events{#参考事件模型,使用[kqueue|rtsig|轮询|/开发/投票|选择|投票];#epoll模型是Linux2.6及以上版本内核中的一种高性能网络I/O模型。如果您在FreeBSD上运行,则使用kqueue模型。#使用epoll;#单个进程的最大连接数(最大连接数=连接数*进程数)worker_connections1024;#multi_accepton;}#http服务器配置http{#引入http协议的content-type和extension对应的文件include/etc/nginx/mime.types;#默认文件类型default_typeapplication/octet-stream;#指定日志格式log_formatmain'$remote_addr-$remote_user[$time_local]"$request"''$status$body_bytes_sent"$http_referer"''"$http_user_agent""$http_x_forwarded_for"';#HTTP服务器请求日志文件名和目录,日志级别access_log/var/log/nginx/access.logmain;#启用高效的文件传输模式。#sendfile命令指定nginx是否调用sendfile函数输出文件。对于普通应用程序,将其设置为开。#如果用于下载等磁盘IO负载比较大的应用,可以设置为off,以平衡磁盘和网络I/O的处理速度。减少系统负载。#注意:如果图片显示不正常,把这个改成off。发送文件;#防止网络阻塞#tcp_nopushon;#tcp_nodelayon;#开启目录列表访问,适用于下载服务器,默认关闭。#自动索引开启;#你需要使用#limit_zone爬虫$binary_remote_addr10m;#长连接超时时间,单位为秒keepalive_timeout65;#gzip模块设置#打开gzip压缩输出#gzipon;#最小压缩文件大小#gzip_min_length1k;#压缩缓冲区#gzip_buffers416k;#压缩版本(默认1.1,如果前端是squid2.5,请使用1.0)#gzip_http_version1.0;#压缩级别#gzip_comp_level2;#压缩类型,默认已经包含了text/html,下面就不用写了,写也没有问题,但是会有warn。#gzip_typestext/plainapplication/x-javascripttext/cssapplication/xml;#gzip_vary开启;#FastCGI相关参数是为了提高网站性能:减少资源占用,提高访问速度。#fastcgi_connect_timeout300;#fastcgi_send_timeout300;#fastcgi_read_timeout300;#fastcgi_buffer_size128k;#fastcgi_buffers8128k;#fastcgi_busy_buffers_size128k;#如果请求大于指定大小,NGINX发回HTTP413(请求实体太大)错误。#如果服务器处理大文件上传,这个指令非常重要。#client_max_body_size20m;#请求正文的缓冲区大小。#如果正文超过缓冲区大小,则将全部或部分内容写入临时文件。#如果NGINX配置为使用文件而不是内存缓冲区,则忽略此指令。#默认情况下,该指令为32位系统设置8k缓冲区,为64位系统设置16k缓冲区。#该指令用于NGINX配置的http、server和location块。#client_body_buffer_size128k;#upstreamabc.com{#上游负载均衡,weight为权重,可根据机器配置定义。weight参数表示权重值,权重值越高,被分配的概率越大。#服务器192.168.10.121:80权重=3;#服务器192.168.10.122:80权重=2;#服务器192.168.10.123:80权重=3;#}#import'/etc/nginx/conf.d/'目录以'.conf'结尾的文件包括/etc/nginx/conf.d/*.conf;#虚拟主机配置server{#监听端口listen80;#域名,可以有多个,用空格隔开server_namelocalhost;#默认编码#charsetutf-8;#日志格式设置#log_formataccess'$remote_addr-$remote_user[$time_local]"$request"'#'$status$body_bytes_sent"$http_referer"'#'"$http_user_agent"$http_x_forwarded_for';#当前虚拟主机请求日志文件的名称和目录,以及日志级别#access_log/var/log/nginx/host.access.logmain;位置/{root/usr/share/nginx/html;索引索引.html索引.htm;}#error_page404/404.html;#将服务器错误页面重定向到静态页面/50x.htmlerror_page500502503504/50x.html;location=/50x.html{root/usr/share/nginx/html;}#将PHP脚本代理到侦听127.0.0.1:80的Apache#将PHP脚本反向代理到侦听端口127.0.0.1:80的Apache#location~\.php${#proxy_passhttp://127.0.0.1;#}#将PHP脚本传递给侦听127.0.0.1:9000的FastCGI服务器#反向代理PHP脚本以侦听端口127.0.0.1:9000FastCGI服务器#location~\.php${#roothtml;#fastcgi_pass127.0.0.1:9000;#fastcgi_indexindex.php;#fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;#包含fastcgi_params;nginx也一样,拒绝访问.htaccess文件#location~/\.ht{#全部拒绝;#}#图片缓存时间设置#location~.*\.(gif|jpg|jpeg|png|bmp|swf)${#expires10d;#}#JS和CSS缓存时间设置#location~.*\.(js|css)?${#expires1h;#}#为“/”启用反向代理#location/{#proxy_passhttp://127.0.0.1:88;#proxy_redirect关闭;##后端web服务器可以通过X-Forwarded-For获取用户真实IP#proxy_set_headerX-Real-IP$remote_addr;#proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;##下面是一些反向代理配置,可选。#proxy_set_header主机$host;##nginx与后端服务器连接超时(代理连接超时)#proxy_connect_timeout90;##后端服务器数据返回时间(代理发送超时)#proxy_send_timeout90;##连接成功后,经过Endserver响应时间(proxy接收超时)#proxy_read_timeout90;##设置代理服务器(nginx)保存用户头信息的缓冲区大小#proxy_buffer_size4k;##proxy_buffersbuffer,一般网页设置在32k以下#proxy_buffers432k;##高负载下的缓冲区大小(proxy_buffers*2)#proxy_busy_buffers_size64k;##设置缓存文件夹的大小,如果大于这个值,会从上游服务器传过来#proxy_temp_file_write_size64k;#}}}2.Nginx变量HTTP请求变量arg_parametername:例如$arg_userid,可以参考请求参数userid的值http_requestHEADERname:例如$http_user_agent,可以参考请求头信息的值User-Agentsent_http_returnHEADERname:在响应客户端可以添加header头信息内置变量Nginx内置变量,参考Nginx文档的Loggingtosyslogcustomvariables服务器管理员定义的变量
