nginx.conf

#运行用户
#user nobody;
#开启进程数 <=CPU数
worker_processes 1;
#错误日志保存位置
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#进程号保存文件
#pid logs/nginx.pid;

#等待事件
events {
#Linux下打开提高性能
#事件响应模式为为高效的 poll 模式
use epoll;
#(使用epoll的I/O 模型
补充说明:
与apache相类,nginx针对不同的操作系统,有不同的事件模型
A)标准事件模型
Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll
B)高效事件模型
Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。
Epoll:使用于Linux内核2.6版本及以后的系统。
/dev/poll:使用于Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。
Eventport:使用于Solaris 10. 为了防止出现内核崩溃的问题, 有必要安装安全补丁)

#每个进程最大连接数(最大连接=连接数x进程数)
#这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文
#件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。
#现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。
#这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。
worker_connections 1024;
}


http {
#文件扩展名与文件类型映射表
include mime.types;
#默认文件类型
default_type application/octet-stream;
#日志文件输出格式 这个位置相于全局设置
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#请求日志保存位置
#access_log logs/access.log main;

#设定请求缓冲
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;

#打开发送文件
sendfile on;
tcp_nopush on;

#keepalive_timeout 0;
#keepalive超时时间
keepalive_timeout 65;

#客户端上传文件大小控制
client_max_body_size 8m;

#打开gzip压缩
gzip on;

## 这里取得原始用户的IP地址
map $http_x_forwarded_for $clientRealIp {
"" $remote_addr;
~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr;
}

## 针对原始用户 IP 地址做限制
limit_conn_zone $clientRealIp zone=TotalConnLimitZone:20m ;
limit_conn TotalConnLimitZone 50;
limit_conn_log_level notice;

## 针对原始用户 IP 地址做限制
limit_req_zone $clientRealIp zone=ConnLimitZone:20m rate=10r/s;
#limit_req zone=ConnLimitZone burst=10 nodelay;
limit_req_log_level notice;

## 避免出现 502
fastcgi_buffers 8 128k;
send_timeout 60;


#设定负载均衡的服务器列表
upstream mytomcats { 
#每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。(但是没办法解决负载均衡了)
#ip_hash;

#weigth参数表示权值,权值越高被分配到的几率越大 #代表请求分发的百分比,默认为1. #max_fails参数表示 最大失败3次 #fail_timeout参数表示 请求失败后 多少秒内不访问 (默认10s)
#buckup 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
#down 表示单前的server暂时不参与负载
server
127.0.0.1:8081 weight=1 max_fails=3 fail_timeout=20s; server 127.0.0.1:8080 weight=2 max_fails=3 fail_timeout=20s;
server 127.0.0.1:8082 weight=3 max_fails=3 fail_timeout=20s buckup;
server 127.0.0.1:8083 weight=4 max_fails=3 fail_timeout=20s down; } server { #nginx监听的端口 listen
80; #nginx过滤的ip或者域名 多个空格 server_name 127.0.0.1 www.baidu.com; #字符 charset UTF-8; #防止爬虫 if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot") { return 403; } #查看nginx实时状态 location /status { #配置验证信息 auth_basic "提示信息"; #用户名密码保存地址 auth_basic_user_file /usr/local/nginx/conf/htpasswd; #监控模块 stub_status on; #关闭日志 access_log off; } #静态文件 location ~* \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ { #expires 30d; (过期时间,30天,可适量调整) root /web/www/html/; } #过滤所有以.html结尾的,必须要验证 location ~ \.html$ { auth_basic "Restricted"; auth_basic_user_file /usr/local/nginx/conf/htpasswd; access_log off; } #所有以 /2.0 目录后面的代理 location ^~/2.0/ { ## 最多 5 个排队, 由于每秒处理 10 个请求 + 5个排队,你一秒最多发送 15 个请求过来,再多就直接返回 503 错误给你了 limit_req zone=ConnLimitZone burst=5 nodelay; proxy_pass http://mytomcats; proxy_redirect off; #保留客户端请求的域名信息 proxy_set_header Host $host; #保留客户端请求的真实 IP 地 址,用于某些访问统计 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 proxy_buffer_size 4k; #proxy_buffer缓冲区,网页平均在32k以下的话,这样设置 proxy_buffers 4 32k; #高负荷下缓冲大小 (proxy_buffers*2 proxy_busy_buffers_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器当代理下载的文件超过该参数设置的大小,nginx会先将文件写入临时目录?(缺省为????nginx?安装目下/proxy_temp目录) proxy_temp_file_write_size 64k; } #禁止访问所有.txt文件 # location ~/\.txt { # deny all; # } } # another virtual host using mix of IP-, name-, and port-based configuration server { #多监听 #listen localhost:8666; #主机名 #server_name LIULJ2576; #WEB文件路径 #root E:/Portal; #默认首页 #index HomePage.html; #location / { # #这里相当于局部变量 # root E:/Portal; # index HomePage.html; #} } # HTTPS server HTTPS SSL加密服务器 # #server { # listen 443; # server_name localhost; # ssl on; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_timeout 5m; # ssl_protocols SSLv2 SSLv3 TLSv1; # ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }

 

posted on 2014-07-29 16:04  Love I Smile  阅读(548)  评论(0编辑  收藏  举报