一、Nginx介绍
火了半边天的Nginx和Apache一样也是Web服务器,专为性能优化而开发,也可以像Squid一样做反向代理,或者邮件代理等许多用途,并有windows的移植版,其最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力,单台物理服务器可支持30000~50000个并发请求,apache理论上只支持3000~5000个并发请求,但是apache对动态网站的支持要比Nginx好。正因为如此,大量提供社交网站,新闻资讯,电子商务及虚拟主机等服务的企业纷纷选择Nginx来提供Web服务。
二、Nginx VS Apache
Nginx优点
(1)轻量级,同样一架web服务,比apache占用更少的内存及资源
(2)高并发,nginx处理请求是异步非阻塞的,而apache则是阻塞型的,在高并发下nginx能保持低资源低消耗高性能
(3)高低模块化的设计,编写模块相对简单
(4)可作为负载均衡服务器,支持7层负载均衡
(5)静态处理性能比Apache高3倍以上,但动态处理不足,需要通过后端服务器支持,如Apache
三、Nginx的安装
1 #1、安装依赖包 pcre-devel (为了支持网页重写机制)和 zlib-devel(一般系统自带)和 pcre(一般系统自带)和 openssl-devel 和 openssl(一般自带) 2 yum -y install pcre-devel openssl-devel 3 #2、创建运行用户和组 4 useradd -M -s /sbin/nologin nginx 5 #3、安装 wget -q http://nginx.org/download/nginx-1.6.0.tar.gz 6 tar zxvf nginx-1.6.0.tar.gz -C /usr/src 7 cd /usr/src/nginx-1.6.0/ 8 ./configure --prefix=/application/nginx-1.6.0 \ 9 --user=nginx --group=nginx \ 10 --with-http_stub_status_module (加模块:网页访问的状态记录服务器也就是日志统计模块)--with-http_ssl_module 11 make && make install 12 #4、创建链接文件 13 ln -s /application/nginx-1.6.0/sbin/nginx /usr/local/sbin/
14 ln -s /applicationnginx-1.6.0 /application/nginx
四、Nginx运行控制方法
~]#nginx -t #检测配置文件语法 ~]#nginx #启动nginx,可以使用elinks ,curl 127.0.0.1,wget 127.0.0.1检查实际开启效果
重新加载nginx
~]#netstat -anpt | grep nginx xxx ~]#kill -s HUP xxx 或 kill -1 xxx 或 killall -s HUP nginx
关闭nginx
~]#kill -s QUIT xxx 或 kill -3 xxx 或 killall -s QUIT nginx
分割日志
~]#kill -s USER1 xxx
平滑升级nginx服务
~]#kill -s USER2 xxx
下面提供一段名为nginx的服务控制脚本:
1 #chkconfig: 2345 21 90 2 #description: nginx server control script 3 PROG="/usr/local/sbin/nginx" 4 PIDF="usr/local/nginx/logs/nginx.pid" # 注意:当nginx安装完毕后并没有生成pid文件,需要在配置文档中开启pid功能,才能出现,这个文件里包含了一个pid进程数字 5 case "$1" in 6 start) 7 $PROG 8 ;; 9 stop) 10 kill -3 $(cat $PIDF) 11 ;; 12 restart) 13 $0 stop #$0代表本文件,这个文件加上可执行权限后,便可这么用 14 $0 start 15 ;; 16 reload) 17 kill -1 $(cat $PIDF) 18 ;; 19 *) 20 echo "Usage: $0 (start|stop|restart|reload)" 21 exit 1 22 esac 23 exit 0
然后设置权限添加为系统服务
~]#chmod +x nginx ~]#chkconfig --add nginx
五、Nginx配置文件分析
/usr/local/nginx/conf/nginx.conf文件包含全局配置、I/O事件配置和HTTP配置这三大块内容,前10行是全局配置,12-14行是I/O事件配置,余下的为HTTP配置;配置语句的格式为 “关键字 值;”
(1)全局配置
由各种配置语句组成,不适用特定的界定标记、可设置Nginx服务的运行用户、工作进程数、错误日志、PID存放位置等,如果配置项注释掉,表示采用默认设置
具体配置:
user nginx nginx; #运行用户改为我们之前建立的nginx用户及其组 worker_processes 1 #工作进程数量为1,若服务器有多块CPU或者使用多核处理器,可参考CPU核心总数来制定工作进程数,比如两块2核的就写4,或者是2倍,8。
以下三项我们一起看:
对于Nginx来说,错误日志分为6级,从严重性由低到高分为debug\info\notice\warn\error\crit;如果下面三个选项我开启 info的话,意味着\info\notice\warn\error\crit这几个级别要做记录,如果写成notice ,那么notice\warn\error\crit要做记录,如果是warn,那么warn\error\crit要做记录依次类推,一般我们开启info那一项。
#error_log logs/error.log #error_log logs/error.log notice; #error_log logs/error.log info;
(2)I/O事件配置
用“events{}” 界定,指定Nginx进程I/O响应模型、每个进程的连接数等
具体配置:
events { use epoll; #2.6及以上版本的内核(查询方法uname -r),建议使用epoll模型以提高性能;它的工作模式有很多种,如果不写的话这里默认是select/poll工作模式;kequeue/epoll是高效功能模式,2.6以上的版本可以用这种模式;kequeue模式用在BSD系统中(一种开源的UNIX)。 worker_connections 1024; #每个进程的连接数应根据实际需要来定,一般在10000以下,默认为1024,意思是1个进程可以同时有1024个人访问进来,Nginx很强悍的,之前我们提到它可以同时响应30000到50000之间的数,所以根据需要改大。 }
注:小知识,最大并发用户数算法 worker_processes的值乘以worker_connections的值,当然具体多少还要看服务器硬件、网络带宽等物理条件的性能表现
(3)HTTP配置
用"http {}"界定,这只访问日志、HTTP端口、网页目录、默认字符集、连接保持,虚拟Web主机、PHP解析等,server{}配置段设置特定的网站(说白了就是配置虚拟主机)。
具体配置:
1 include mine.types #表示支持多媒体 2 log_format main #紧随其后有三行,意思都是定义日志格式的,这个格式的名字叫main 3 access_log logs/access.log main; #一般启用这个访问日志路径,它的格式就是上面我们提到的名为main的格式 4 sendfile on #是否支持文件发送(下载) 5 keepalive_timeout 65 #连接保持超时(访问页面后,如果不做任何操作65秒后将断开连接) 6 listen 80 #监听地址及端口 7 server_name www.benet.com #设置网络名称(FQDN) 8 charset utf-8 ; #网站默认字符集,默认是俄语,我们改为utf-8
9 location / { #根目录配置 10 root html ; #网站根目录的位置,这是个相对路径,其实是/usr/local/nginx/html/ 11 index index.html index.htm; #默认首页 12 }
13 error_page 404 /404.html; #404报错页是由404.html来调用启动的 14 error_page 500 502 503 504 /50x.html; #这些报错页都是由50x.html来调用启动的
六、构建静态网站
步骤:(和apahe验证是一样的http://www.cnblogs.com/mangood/p/5947110.html)
1、修改主配置文件、新建www.benet.com网站
2、准备网站目录与测试网页
3、配置本地解析或DNS解析
4、启动并检测服务是否正常
七、查看统计日志
(1)Nginx内置了HTTP_STUB_STATUS状态统计模块,修改nginx.conf配置文件,指定访问位置/status并打开stub_status配置
1 ~]#vim /usr/local/nginx/conf/nginx.conf 2 添加 3 location ~ /status { 4 stub_status on; #由stub_status来统计日志 5 access_log off; #关闭系统自身的日志功能 6 } 7 ~]#service nginx reload
(2)在浏览器中访问/status,看到统计信息
输入地址http://www.benet.com/status