{{ v.name }}
{{ v.cls }}类
{{ v.price }} ¥{{ v.price }}
nginx(发音为[enginex])专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消耗,以及对并发连接的高处理能力(单台物理服务器可支持30000~50000个并发连接),是一个高性能的http和反向代理服务器,也是一个imap/pop3/smtp代理服。
实际使用中,nginx主要:反向代理、负载均衡
#运行用户
usernobody;
#启动进程,通常设置成和cpu的数量相等
worker_processes1;
#全局错误日志及pid文件
#error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;
#pidlogs/nginx.pid;
#工作模式及连接数上限
events{
#epoll是多路复用io(i/omultiplexing)中的一种方式,
#仅用于linux2.6以上内核,可以大大提高nginx的性能
useepoll;
#单个后台workerprocess进程的最大并发链接数
worker_connections1024;
#并发总数是worker_processes和worker_connections的乘积
#即max_clients=worker_processes*worker_connections
#在设置了反向代理的情况下,max_clients=worker_processes*worker_connections/4为什么
#为什么上面反向代理要除以4,应该说是一个经验值
#根据以上条件,正常情况下的nginxserver可以应付的最大连接数为:4*8000=32000
#worker_connections值的设置跟物理内存大小有关
#因为并发受io约束,max_clients的值须小于系统可以打开的最大文件数
#而系统可以打开的最大文件数和内存大小成正比,一般1gb内存的机器上可以打开的文件数大约是10万左右
#我们来看看360m内存的vps可以打开的文件句柄数是多少:
#$cat/proc/sys/fs/file-max
#输出34336
#32000<34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内
#所以,worker_connections的值需根据worker_processes进程数目和系统可以打开的最大文件总数进行适当地进行设置
#使得并发总数小于操作系统可以打开的最大文件数目
#其实质也就是根据主机的物理cpu和内存进行配置
#当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。
#ulimit-shn65535
}
#设定http服务器
http{
#设定mime类型,类型由mime.type文件定义
includemime.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"';
access_loglogs/access.logmain;
#sendfile指令指定nginx是否调用sendfile函数(zerocopy方式)来输出文件,
#对于普通应用,必须设为on,
#如果用来进行下载等应用磁盘io重负载应用,可设置为off,
#以平衡磁盘与网络i/o处理速度,降低系统的uptime.
sendfileon;
#tcp_nopushon;
#连接超时时间
#keepalive_timeout0;
keepalive_timeout65;
tcp_nodelayon;
#fastcgi相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。
fastcgi_connect_timeout300;fastcgi_send_timeout300;fastcgi_read_timeout300;fastcgi_buffer_size64k;fastcgi_buffers464k;fastcgi_busy_buffers_size128k;fastcgi_temp_file_write_size128k;
#upstream的负载均衡,(以权重方式分发),weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。
upstreamblog.nginx.com{server192.168.80.121:80weight=3;server192.168.80.122:80weight=2;server192.168.80.123:80weight=3;}
#upstream的负载均衡,(以nginx热备方式分发),其它所有的非backupserverdown或者忙的时候,请求backup机器。所以这台机器压力会最轻。
upstreamblog.nginx.com{server192.168.80.121:80;server192.168.80.122:80;server192.168.80.123:80backup;}
#开启gzip压缩
gzipon;
gzip_disable"msie[1-6].";
#设定请求缓冲
client_header_buffer_size128k;
large_client_header_buffers4128k;
#设定虚拟主机配置
server{
#侦听80端口
listen80;
#定义访问地址,域名可以有多个,用空格隔开
server_namewww.nginx.cnnginx.cn;
#定义服务器的默认网站根目录位置
roothtml;
#设定本虚拟主机的访问日志
access_loglogs/nginx.access.logmain;
#默认请求
location/{#定义首页索引文件的名称indexindex.phpindex.htmlindex.htm;}
#对“/”启用反向代理
location/{proxy_passhttp://127.0.0.1:88;proxy_redirectoff;proxy_set_headerx-real-ip$remote_addr;#后端的web服务器可以通过x-forwarded-for获取用户真实ipproxy_set_headerx-forwarded-for$proxy_add_x_forwarded_for;#以下是一些反向代理的配置,可选。proxy_set_headerhost$host;client_max_body_size10m;#允许客户端请求的最大单文件字节数client_body_buffer_size128k;#缓冲区代理缓冲用户端请求的最大字节数,proxy_connect_timeout90;#nginx跟后端服务器连接超时时间(代理连接超时)proxy_send_timeout90;#后端服务器数据回传时间(代理发送超时)proxy_read_timeout90;#连接成功后,后端服务器响应时间(代理接收超时)proxy_buffer_size4k;#设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffers432k;#proxy_buffers缓冲区,网页平均在32k以下的设置proxy_busy_buffers_size64k;#高负荷下缓冲大小(proxy_buffers*2)proxy_temp_file_write_size64k;#设定缓存文件夹大小,大于这个值,将从upstream服务器传}
#设定查看nginx状态的地址
location/nginxstatus{stub_statuson;access_logon;auth_basic“nginxstatus”;auth_basic_user_fileconf/htpasswd;#htpasswd文件的内容可以用apache提供的htpasswd工具来产生。}
#本地动静分离反向代理配置
#所有jsp的页面均交由tomcat或resin处理
location~.(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
location~.*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)${expires15d;}location~.*.(js|css)?${expires1h;}
#定义错误提示页面
error_page500502503504/50x.html;location=/50x.html{}
#静态文件缓存时间设置,nginx自己处理
location~^/(images|javascript|js|css|flash|media|static)/{#过期30天,静态文件不怎么更新,过期可以设大一点,#如果频繁更新,则可以设置得小一点。expires30d;}
#php脚本请求全部转发到fastcgi处理.使用fastcgi默认配置.
location~.php${fastcgi_pass127.0.0.1:9000;fastcgi_indexindex.php;fastcgi_paramscript_filename$document_root$fastcgi_script_name;includefastcgi_params;}
#禁止访问.htxxx文件
location~/.ht{denyall;}
}
}
http://my.oschina.net/xsh1208/blog/199674
nginx中upstream有以下几种方式:
1、轮询(weight=1)默认选项,当weight不指定时,各服务器weight相同,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstreambakend{server192.168.1.10;server192.168.1.11;}
2、weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。如果后端服务器down掉,能自动剔除。比如下面配置,则1.11服务器的访问量为1.10服务器的两倍。
upstreambakend{server192.168.1.10weight=1;server192.168.1.11weight=2;}
3、ip_hash每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session不能跨服务器的问题。如果后端服务器down掉,要手工down掉。
upstreamresinserver{ip_hash;server192.168.1.10:8080;server192.168.1.11:8080;}
4、fair(第三方插件)按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstreamresinserver{server192.168.1.10:8080;server192.168.1.11:8080;fair;}
5、url_hash(第三方插件)按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存服务器时比较有效。在upstream中加入hash语句,hash_method是使用的hash算法
upstreamresinserver{server192.168.1.10:8080;server192.168.1.11:8080;hash$request_uri;hash_methodcrc32;}
设备的状态有:1.down表示单前的server暂时不参与负载2.weight权重,默认为1。weight越大,负载的权重就越大。3.max_fails允许请求失败的次数默认为1。当超过最大次数时,返回proxy_next_upstream模块定义的错误4.fail_timeoutmax_fails次失败后,暂停的时间。5.backup备用服务器,其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
启动nginx:nginx-c/path/to/nginx.conf重启nginx:nginx-sreload:修改配置后重新加载生效nginx-sreopen:重新打开日志文件nginx-t-c/path/to/nginx.conf测试nginx配置文件是否正确关闭nginx:nginx-sstop:快速停止nginxquit:完整有序的停止nginx其他的停止nginx方式:ps-ef|grepnginxkill-quit主进程号:从容停止nginxkill-term主进程号:快速停止nginxpkill-9nginx:强制停止nginx平滑重启nginx:kill-hup主进程号