nginx相比于apache优缺点及编译安装,网页缓存
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。在同类型的web服务器中表现较好,中国使用nginx网站用户有:百度BWS、新浪、网易、腾讯等。 Nginx官网: nginx:http://nginx.org/ RamBler:http://www.rambler.ru/ Rambler是俄罗斯的门户网站,也是俄罗斯的三大门户之一,在这里你可以了解俄罗斯社会的方方面面。严格意义来讲,Rambler应该是俄罗斯的行业分类网站,每天大约有800万人利用该网站查询相关信息,是俄罗斯当之无愧的第二大本土搜索引擎。 Tengine: Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。(可以这样理解:淘宝拿到了Nginx源代码之后,进行了功能的填充,优化等等,然后提交给Nginx官方,但是由于Nginx官方相应慢或者不响应,加上语言沟通的不顺畅,于是淘宝公司就自己打包,在遵循GPL的原则上进行二次开发,于是就出了现在的Tengine这个版本)。
Nginx优缺点及原理
Nginx: nginx相对于apache的优点: 轻量级,同样起web 服务,相比 Apache,Nginx 在静态处理性能比 Apache 高 3倍上,工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,Nginx单凭这点可利用的场合就远多于LVS了,比apache 占用更少的内存及资源 ;高并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能;高度模块化的设计,编写模块相对简单;社区活跃,各种高性能模块出品迅速。 apache 相对于nginx 的优点: rewrite ,比nginx 的rewrite强大;模块超多,基本想到的都可以找到;少bug ,nginx 的bug 相对较多;超稳定 存在就是理由,一般来说,需要性能的web 服务,用nginx 。如果不需要性能只求稳定,那就apache 。nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。
apache
nginx
下载安装nginx 下载:http://nginx.org/en/download.html 首先由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++、gcc、openssl-devel、pcre-devel和zlib-devel 所以执行如下命令安装,安装上传依赖包
yum install lrzsz gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl--devel python -y
rz上传到服务器 ,Nginx正式安装
tar xvf nginx-1.10.2.tar.gz
cd nginx-1.10.2
创建nginx用户并加入nologin文件
useradd -s /sbin/noligin -M nginx
开始预编译吗,安装
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre
echo $?
0
make && make install
echo $?
0
如果没有报错,顺利完成后,最好看一下nginx的安装目录
whereis nginx
测试配置文件 安装路径下的
/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
查看进程 ps -ef | grep nginx
启动服务:[root@localhost nginx]# /usr/local/nginx/sbin/nginx
停止服务:[root@localhost nginx]# /usr/local/nginx/sbin/nginx -s stop
expires缓存调优
缓存,主要针对于图片,css,js等元素更改机会比较少的情况下使用,特别是图片,占用带宽大,我们完全可以设置图片在浏览器本地缓存30d,这样用户第一次打开加载慢一点,第二次,就非常快了!缓存的时候,我们需要将需要缓存的拓展名列出来! Expires缓存配置在server字段里面
2、设置网页缓存(对静态资源过期时间设置) 修改配置文件vim /usr/local/nginx/conf/nginx.conf 在57行添加 location ~* .(ico|gif|bmp|jpg|jpeg|png|swf|js|css|mp3) { root html; expires 30d; } 修改完配置文件放一个图片到网站根目录下(/usr/local/nginx/html),然后重启服务,网页测试 -s reload
expire功能优点 (1)expires可以降低网站购买的带宽,节约成本 (2)同时提升用户访问体验 (3)减轻服务的压力,节约服务器成本,甚至可以节约人力成本,是web服务非常重要的功能。
使用yslow查看页面缓存时间,如下图表示成功
添加Nginx到系统服务
创建nginx启动命令脚本 vi /etc/init.d/nginx 复制插入以下内容, 注意修改PATH和NAME字段, 匹配自己的安装路径
#! /bin/bash
# chkconfig: - 85 15
PATH=/usr/local/nginx
DESC="nginx daemon"
NAME=nginx
DAEMON=PATH/sbin/PATH/sbin/NAME
CONFIGFILE=PATH/conf/PATH/conf/NAME.conf
PIDFILE=PATH/logs/PATH/logs/NAME.pid
SCRIPTNAME=/etc/init.d/NAMEset−e[−x"NAMEset−e[−x"DAEMON" ] || exit 0
do_start() {
DAEMON−cDAEMON−cCONFIGFILE || echo -n "nginx already running"
}
do_stop() {
DAEMON -s stop || echo -n "nginx not running"
}
do_reload() {
$DAEMON -s reload || echo -n "nginx can't reload"
}
case "DAEMON -s stop || echo -n "nginx not running" } do_reload() { $DAEMON -s reload || echo -n "nginx can't reload" } case "1" in
start)
echo -n "Starting DESC:DESC:NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping DESC:DESC:NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading DESCconfiguration..."doreloadecho".";;restart)echo−n"RestartingDESCconfiguration..."doreloadecho".";;restart)echo−n"RestartingDESC: NAME"dostopdostartecho".";;∗)echo"Usage:NAME"dostopdostartecho".";;∗)echo"Usage:SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0
设置执行权限 chmod a+x /etc/init.d/nginx
注册成服务 chkconfig --add nginx
设置开机启动 chkconfig nginx on
查看nginx服务是否自动启动
shutdown -h 0 -r 重启
netstat -apn|grep nginx
对nginx服务执行停止/启动/重新读取配置文件操作
启动nginx服务
systemctl start nginx.service
停止nginx服务
systemctl stop nginx.service
重启nginx服务
systemctl restart nginx.service
重新读取nginx配置(这个最常用, 不用停止nginx服务就能使修改的配置生效)
systemctl reload nginx.service

发表评论