配置文件说明#定义运行Nginx的用户和用户组userwwwwww;#Nginx进程号,建议设置为当前主机CPU总核数。worker_processes8;#全局错误日志定义类型,[debug|资讯|公告|警告|错误|暴击]error_logar/loginx/error.log信息;#进程文件pid/usr/local/nginx/logs/nginx.pid;#一个nginx进程打开的最大文件描述符数,理论值应该是最大打开文件数(系统值ulimit-n)除以nginx进程数,但是nginx分配请求不是统一的,所以是推荐使用ulimit-n值保持不变。worker_rlimit_nofile65535;#工作模式和连接限制事件{#参考事件模型,使用[kqueue|rtsig|轮询|/开发/投票|选择|投票];epoll模型是一种高性能的网络I/O模型,如果在FreeBSD上运行,使用kqueue模型。使用epoll;#单个进程的最大连接数(最大连接数=连接数*进程数)worker_connections65535;}#设置http服务器http{includemime.types;#文件扩展名与文件类型映射表default_typeapplication/octet-stream;#默认文件类型字符集utf-8;#默认编码server_names_hash_bucket_size128;#服务器名哈希表大小client_header_buffer_size32k;#客户端请求头缓冲区大小nginx默认会使用client_header_buffer_size缓冲区读取header值,如果header过大,会使用large_client_header_buffers读取large_client_header_buffers464k;client_max_body_size8m;#设置请求大小;发送文件;#启用高效文件传输模式,sendfile命令指定nginx是否调用sendfile函数输出文件,普通应用设置为on,如果用于下载等磁盘IO负载大的应用,可以设置为off以平衡磁盘和网络I/O的处理速度,降低系统的负载。注意:如果画面显示不正常,将此项改为关闭。自动索引;#启用目录列表访问,适用于下载服务器,默认关闭。tcp_nopush上;#防止网络阻塞tcp_nodelayon;#防止网络阻塞keepalive_timeout120;#长连接超时时间,单位是秒#FastCGI相关参数是为了提高网站性能:减少资源占用,提高访问速度。下面的参数可以从字面上理解。fastcgi_connect_timeout300;fastcgi_send_timeout300;fastcgi_read_timeout300;fastcgi_buffer_size64k;fastcgi_buffers464k;fastcgi_busy_buffers_size128k;fastcgi_temp_file_write_size128k;#gzip模块设置gzipon;#启动gzip压缩输出gzip_min_length1k;#最小压缩文件大小gzip_buffers416k;#压缩压缩冲区gzip_http_version1.0;#压缩版本(默认1.1,如果前端是squid2.5,请使用1.0)gzip_comp_level2;#压缩级别gzip_typestext/plainapplication/x-javascripttext/cssapplication/xml;#compression类型,默认已经包含了textml,下面就不用写了,写起来也没有问题,但是会有warn。gzip_vary开启;#limit_zone爬虫$binary_remote_addr10m;#启用限制IP连接数时使用upstreamnginx.com{#upstream负载均衡,weight为权重,权重可以根据机器配置定义。weight参数表示权重值,权重值越高,被分配的概率越大。服务器192.168.80.121:80权重=3;服务器192.168.80.122:80权重=2;服务器192.168.80.123:80权重=3;}#虚拟主机配置,一个server代表一个虚拟主机,可以重复设置有很多配置,推荐使用include,可以在设置多台主机时减少配置文件的代码量;server{#监听端口listen80;#域名可以有多个,用空格隔开server_namewww.nixi8.comnixi8.com;indexindex.htmlindex.htmindex.php;根/data/www/nixi8;#####includeenable-php.conf######资源位置location~.*.(php|php5)?${fastcgi_pass127.0.0.1:9000;fastcgi_indexindex.php;包括fastcgi.conf;}#图片缓存时间设置位置~.*.(gif|jpg|jpeg|png|bmp|swf)${expires10d;}#JS和CSS缓存时间设置位置~.*.(js|css)?${expires1h;}#日志格式设置log_formataccess'$remote_addr-$remote_user[$time_local]"$request"''$status$body_bytes_sent"$http_referer"''"$http_user_agent"$http_x_forwarded_for';#定义本虚拟主机的访问日志access_log/home/wwwlogs/access.logaccess;#启用“/”的反向代理位置/{proxy_passhttp://127.0.0.1:88;proxy_redirect关闭;proxy_set_headerX-Real-IP$remote_addr;#后台web服务器可以通过X-Forwarded-Forproxy_set_header获取用户真实IPX-Forwarded-For$proxy_add_x_forwarded_for;#下面是一些反向代理配置,可选proxy_set_header主机$host;client_max_body_size10m;#客户端对单个文件的最大请求字节数client_body_buffer_size128k;#buffer代理缓冲客户端请求的最大字节数,proxy_connect_timeout90;#nginx与后端服务器连接超时时间(Proxyconnectiontimeout)proxy_send_timeout90;#后端服务器数据返回时间(代理发送超时)proxy_read_timeout90;#连接成功后,后端服务器响应时间(proxy接收超时)proxy_buffer_size4k;#设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffers432k;#proxy_buffersbuffer,一般网页在32k以下,设置proxy_busy_buffers_size64k;#高负载下的缓冲区大小(proxy_buffers*2)proxy_temp_file_write_size64k;#设置缓存文件夹大小,大于这个值,会从上游服务器传过来}#设置查看Nginx状态的地址location/NginxStatus{stub_statuson;访问登录;auth_basic"Nginx状态";auth_basic_user_fileconfpasswd;}#本地动静分离反向代理配置#所有jsp页面由tomcat或resinlocation处理~.(jsp|jspx|do)?${proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_passhttp://127.0.0.1:8080;}#所有静态文件都是nginx直接读取的,不需要tomcat或者resin定位~.*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)${过期15d;}location~.*.(js|css)?${过期1h;}}}修改配置文件后,最好检查一下修改后的配置文件是否正确,以免Nginx报错影响服务器重启后的稳定运行。判断Nginx配置是否正确的命令如下:nginx-t-c/usr/nginx/conf/nginx.conf/usr/nginx/sbin/nginx-t注意:配置里面有个坑windows系统,比如D:wampwwwtest,t是翻译成tab虚拟主机配置#Domainname-basedvirtualhostserver{listen80;#监听端口server_namea.com;#监听域名,多个域名之间用空格隔开;location/{root/var/www/a.com;#站点根目录,存放你的网站文件。注意:站点目录和域名尽量相同,养成索引index.html的好习惯;}}#基于端口的虚拟主机配置服务器{listen8080;服务器名称192.168.1.204;位置/{root/var/www/b.com;索引index.html;}}逻辑操作nginx的配置不支持&&或者||的操作在if条件的逻辑上,不支持if的嵌套语法,否则会报如下错误:nginx:[emerg]invalidcondition。我们可以通过变量间接地实现这一点。#例如实现if($arg_unitid=42012&&$uri~/thumb/){return403;}#可以设置$flag0;if($uri~^/thumb/[0-9]+_160.jpg$){设置$flag"${flag}1";}if($arg_unitid=42012){设置$flag"${flag}1";}if($flag="011"){返回403;}
