nginx相对付apache的优点:
轻量级,比apache 占用更少的内存及资源抗并发,nginx 处理要求是异步非壅塞的,而apache 则是壅塞型的,在高并发下nginx 能保持低资源低花费高性能Nginx 是一个安装非常的大略 , 配置文件非常简洁(支持perl语法), Bugs 非常少的做事器: Nginx 配置简洁, Apache 繁芜Nginx 静态处理性能比 Apache 高nginx处理静态文件好,耗费内存少nginx的负载能力比apache高很多。Nginx优于apache的紧张两点:1.Nginx本身便是一个反向代理做事器 2.Nginx支持7层负载均衡;Nginx可能会apache支持更高的并发nginx,配置文件简洁,正则配置让很多事情变得大略运行效率高,占用资源少,代理功能强大,很适宜做前端相应做事器,Nginx并发性比较好,CPU内存占用低apache 相对付nginx 的优点:
rewrite ,比nginx 的rewrite 强大Apache在处理动态有上风;一样平常来说,须要性能的web 做事,用nginx 。如果不须要性能只求稳定,那就apache 作为 Web 做事器:比较 Apache,Nginx 利用更少的资源,支持更多的并发连接,表示更高的效率,在高连接并发的情形下,Nginx是Apache做事器不错的替代品:Apache 对 PHP 支持比较大略,Nginx 须要合营其他后端用Apache 的组件比 Nginx 多apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接可以对应一个进程nginx处理动态要求的能力较弱,一样平常动态要求要apache去做,nginx只适宜静态和反向。nginx没有自己供应处理PHP的功能,须要通过第三方的模块来供应对PHP进行FastCGI办法的集成。Nginx(发音enginex)专为性能优化而开拓,其最有名的优点是它的稳定性和低系统资源花费,以及对HTTP并发连接的高处理能力(单台物理做事器可支持30000~50000个并发要求)。正由于如此,大量供应社交网站、新闻资讯、电子商务以及虚拟主机等做事的企业纷纭选择Ngnix来供应WEB做事。
2、Nginx的安装及运行掌握:
目前Nginx的最新稳定版本为1.0.8,开拓版本为1.1.6,其安装文件可以从官方网站http://www.nginx.org下载,下面以稳定版为例,先容nginx的安装和运行掌握。
编译安装Nginx
1)安装支持软件:
Nginx的配置及运行须要pcre、zlib等软件包的支持,因此应预先安装这些软件的开拓包(devel),以便供应相应的库和头文件,确保Nginx的安装顺利完成。
[root@nginx ~]# yum -y install pcre-devel zlib-devel
2)创建运行用户、组:
Nginx做事程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地掌握其访问权限,增加灵巧性、降落安全风险。
如:创建一个名为nginx的用户,不建立宿主目录,也禁止登录到shell环境。
[root@nginx ~]# useradd -M -s /sbin/nologin nginx
3)编译安装nginx:
开释nginx源码包
[root@nginx ~]# tar zfxv nginx-1.0.8.tar.gz
编译前配置:
[root@nginx ~]# cd nginx-1.0.8
[root@nginx nginx-1.0.8]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
注:配置前可以参考:./configure--help给出解释
--prefix:设定Nginx的安装目录--user和—group:指定Nginx运行用户和组--with-http_stub_status_module:启用http_stub_status_module模块以支持状态统计编译并安装:
至此Nginx安装完成,为了使Nginx做事器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接实行nginx命令就可以调用Nginx的主程序。
[root@nginx nginx-1.0.8]# ln -s /usr/local/nginx/sbin/nginx/usr/local/sbin/
[root@nginx nginx-1.0.8]# ls -l /usr/local/sbin/nginx
Nginx的运行掌握:
与apache的主程序httpd类似,Nginx的主程序也供应了”-t”选项用来对配置文件进行检讨,以便找出不当或缺点的配置。配置文件nginx.conf默认位于安装目录下的conf/子目录中。若要检讨位于其他位置的配置文件,可利用”-c”选项来指定路径。
[root@nginx ~]# nginx -t
启动、停滞Nginx:
直接运行nginx即可启动Nginx做事器,这种办法将利用默认的配置文件,若要改用其他配置文件,需添加”-c配置文件路径”选项来指定路径。须要把稳的是,若做事器中已安装有httpd等其他WEB做事软件,应采纳方法避免冲突。
通过检讨 Nginx程序的监听状态,或者在浏览器中访问此WEB做事(默认页面将显示“Welcome to nginx!”),可以确认Nginx做事是否正常运行。
或利用elinks浏览器(需安装elinks软件包。yum-y installelinks)【nss_compat_ossl 和elinks】
把稳:要在防火墙上许可80端口的通信。
停滞Nginx做事:
#Killall -9 nginx
当Nginx进程运行时,PID号默认存放在logs/目录下的nginx.pid文件中,因此若改用kill命令,也可以根据nginx.pid文件中的PID号来进行掌握。
为了使Nginx做事的启动、停滞、重载等操作更加方便,可以编写Nginx做事脚本,并利用chkconfig和service工具来进行管理,也更加符合RHEL系统的管理习气。
脚本内容如下:
#!/bin/bash
# chkconfig: 2345 99 20
# description: Nginx Service Control Script
PROG=\"大众/usr/local/nginx/sbin/nginx\公众
PIDF=\"大众/usr/local/nginx/logs/nginx.pid\"大众
case \公众$1\"大众 in
start)
$PROG -t &> /dev/null
if [ $? -eq 0 ]
then
$PROG
echo \公众Nginx service start success.\"大众
else
$PROG -t
fi
;;
stop)
kill -s QUIT $(cat $PIDF)
echo \公众Nginx service stop success.\"大众
;;
restart)
$0 stop
$0 start
;;
reload)
$PROG -t &> /dev/null
if [ $? -eq 0 ]
then
kill -s HUP $(cat $PIDF)
echo \公众reload Nginx config success.\公众
else
$PROG -t
fi
;;
)
echo \"大众Usage: $0 {start|stop|restart|reload}\"大众
exit 1
esac
截图如下:
注:通过kill或killall命令发送HUP旗子暗记表示重载配置, 用新的配置开始新的事情进程
关闭旧的事情进程。QUIT旗子暗记表示退出进程,KILL旗子暗记表示杀去世进程。通过”-s”选项指定旗子暗记种类。
添加为系统做事。
[root@nginx ~]# chmod +x /etc/init.d/nginx
[root@nginx ~]# chkconfig --add nginx
这样一来,就可以通过nginx脚本来启动、停滞、重启、重载Nginx做事器了。
3、配置文件nginx.conf:
在Nginx做事器的主配置文件nginx.conf中,包括全局配置、I/O事宜配置、HTTP配置这三大块内容,配置语句的格式为”关键字值;”(末端以分号表示结束),以”#”开始的部分表示注释。
1)全局配置
由各种配置语句组成,不该用特定的界定标记。全局配置部分包括运行用户、事情进程数、缺点日志、PID存放位置等基本设置。
常用配置项:
usernobody; //运行用户,Nginx的运行用户实际是编译时指定的nginx,若编译时未指定则默认为nobody
worker_processes 2; //指定nginx启动的事情进程数量,建议按照cpu数目来指定,一样平常为它的倍数
worker_cpu_affinity 00000001 00000010; //为每个进程分配cpu,上例中将2个进程分配到两个cpu,当然可以写多个,或者将一个进程分配到多个cpu
worker_rlimit_nofile 102400; //这个指令是指当一个nginx进程打开的最多文件数目,理论值该当是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配要求并不是那么均匀,以是最好与ulimit -n的值保持同等。(通过”ulimit –n 数值”可以修正打开的最多文件数目)
error_loglogs/error.log; //全局缺点日志文件的位置
pidlogs/nginx.pid; //PID文件的位置
2)I/O事宜配置:
利用”events {}”界定标记,用来指定Nginx进程的I/O相应模型,每个进程的连接数等设置
events {
use epool;/ /利用epool模型,对付2.6以上的内核,建议利用epool模型以提高性能
worker_connections 4096; //每个进程许可的最多连接数(默认为1024),每个进程的连接数应根据实际须要来定,一样平常在10000以下,理论上每台nginx做事器的最大连接数为
worker_processesworker_connections,详细还要看做事器的硬件、带宽等。
}
3)HTTP配置
利用”http{}”界定标记,包括访问日志、HTTP端口、网页目录、默认字符集、连接保持、以及虚拟主机、PHP解析等一系列设置。个中大部分配置语句包含在子界定标记”servier {}”内。
http {
#设定mime类型,即conf/目录下的mime.types文件中的设定。
includemime.types;
default_type application/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 log
access_log logs/access.log main;
sendfileon; //支持文件发送(下载)
keepalive_timeout 65; //连接保持超时
#设定虚拟主机
server { //用来配置虚拟主机
listen80; //WEB做事的监听设置,可以采取”IP地址:端口”形式
server_name www.lnmp.com网站名,称可以写多个名称,用空格分隔;
location / { //表示如何匹配后面的路径的
index index.html; //默认首页
root html; //网页根目录位置,默认为Nginx安装目录下的html/子目录,root语句用来设置特定访问位置的网页文档路径,根据须要可改为/var/www/html等其他路径。
}
charset gb2312; //网页的默认字符集
#设定本虚拟主机的访问日志
access_log logs/www.lnmp.com.access.log main;
error_page 500 502 503 504/50x.html; //内部缺点的反馈页面
location = /50x.html {
root html;
}
}
}
Nginx的location
基本语法:
location [=|~|~|^~] /uri/ { … }
=表示做精确匹配~ :为区分大小写匹配~:为不区分大小写匹配!~ :和!~分别为区分大小写不匹配及不区分大小写不匹配正则表达式匹配,个中:文件及目录匹配,个中:-f 和!-f用来判断是否存在文件-d和!-d用来判断是否存在目录-e和!-e用来判断是否存在文件或目录-x 和!-x用来判断文件是否可实行示例1:
location = / {
# 只匹配 / 查询。
}
location/ {
#匹配任何查询,由于所有要求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配
}
示例2:
location ^~ /images/ {
# 匹配任何以 /images/ 开头的任何查询并且停滞搜索。任何正则表达式将不会被测试。
}
示例3:
location ~ \.(gif|jpg|jpeg)$ {
# 匹配任何以 gif、jpg 或 jpeg 结尾的要求。
}
4、状态统计及虚拟主机运用:
1)Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的WEB访问情形。配置
编译参数时可添加—with-http_stub_stastus_module来启用此模块。要利用Nginx的状态统计功能,除了启用内建模块以外,还须要修正nginx.conf文件,指定访问位置并打开stub_status配置。在http{}配置的server{}子配置内添加如下配置项:
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on;
access_log off;
auth_basic \"大众Nginx status\"大众;
auth_basic_user_file /usr/local/nginx/.htpasswd;
}
注:location/status //匹配任何包含/tongji的任何查询
stub_statuson //打开状态统计功能
Access_logoff //关闭此位置的日志记录
Nginx 支持为目录添加密码认证,利用apache 的 htpasswd 来创建密码文件
htpasswd-c/usr/local/nginx/.htpasswd用户名
保存修正过的nginx.conf文件并重启nginx做事使修生效。
新的配置生效后,在浏览器中访问Nginx做事器的/tongji网站位置(http://web做事器IP/status)可以看到状态统计信息
如上图所示:个中”Active connections”表示当前的活动连接数;而\"大众server accepts handled requests”表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、已处理的要求数.
客户端访问掌握:
注:allow 许可规则,deny谢绝规则;规则的实行是按从上向下实行,匹配某条规则后将不
再检讨其他规则。
2)虚拟主机:
利用Nginx搭建虚拟主机做事器时,每个虚拟WEB站点拥有独立的”server {}”配置段,各自
监听的IP地址、端口号可以单独指定,当然网站名称也是不同的。
例如:要创建两个站点www.AAA.com和www.BBB.com
为两个虚拟WEB主机分别建立根目录,并准备测试首页
[root@nginx ~]# mkdir -p /var/www/AAA
[root@nginx ~]# echo \公众www.AAA.com\"大众 > /var/www/AAA/index.html
[root@nginx ~]# mkdir -p /var/www/BBB
[root@nginx ~]# echo \"大众www.BBB.com\"大众 > /var/www/BBB/index.html
调度nginx.conf配置文件---域名虚拟主机
配置两个”server {}”区域,分别对应两个WEB站点,指定各自的网站名称、监听地址、网站
根目录、访问日志等信息,然后重载配置
server {
listen 80;
server_name www.AAA.com AAA.com;
charset utf-8;
access_log logs/AAA.access.log main;
location / {
root /var/www/AAA;
index index.html index.php;
}
}
server {
listen 80;
server_name www.BBB.com BBB.com;
charset utf-8;
access_log logs/BBB.access.log main;
location / {
root /var/www/BBB;
index index.html index.php;
}
}
测试:
利用浏览器分别通过www.AAA.com和www.BBB.com访问两个WEB站点(把稳域名解析。)
利用浏览器分别通过www.AAA.com和www.BBB.com访问两个WEB站点(把稳域名解析。)
转载地址:http://blog.51cto.com/wenzhongxiang/1251063
本文作者:wenzhongxiang