1.Nginx的简单介绍
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Apache与Nginx的优缺点比较:
1.nginx相对于apache的优点:
轻量级,同样起web 服务,比apache 占用更少的内存及资源
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
社区活跃,各种高性能模块出品迅速
2.apache 相对于nginx 的优点:
rewrite ,比nginx 的rewrite 强大
模块超多,基本想到的都可以找到
少bug ,nginx 的bug 相对较多
超稳定
apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程
2.Nginx的主要功能
反向代理
反向代理应该是 Nginx 做的最多的一件事了,什么是反向代理呢,以下是百度百科的说法:反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet上 的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台服务器,端口不同而已。
负载均衡
负载均衡也是 Nginx 常用的一个功能,负载均衡其意思就是分摊到多个操作单元上进行执行,例如:Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理,负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。而Nginx目前支持自带3种负载均衡策略,还有2种常用的第三方策略。
HTTP服务器
Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,同时现在也很流行动静分离,就可以通过Nginx来实现,首先看看Nginx做静态资源服务器。
正向代理
向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。当你需要把你的服务器作为代理服务器的时候,可以用Nginx来实现正向代理。
3.Nginx的平滑升级
1.安装新版nginx
1.获取nginx安装包(从官网下载)并解压,进入解压目录
2.为nginx设置语法提示
mkdir ~/.vim
cp -r coontrib/vim/* ~/.vim
3.为解决依赖性,安装包
yum install pcre-devel zlib-devel gcc -y
4.编译、安装
./configure --help
./configure --prefix=/usr/local/nginx --with-file-aio
make && make install
5.检测nginx的配置文件是否有语法错误以及此时的nginx的版本号
/usr/local/nginx/sbin/nginx -t ##检查语法是否有错误
/usr/local/nginx/sbin/nginx -V ##查看版本号和安装模块
/usr/local/nginx/sbin/nginx -v ##只查看版本号
6.开启nginx并查看此时nginx的进程以及nginx的进程用户是谁
cd /usr/local/nginx/conf/
/usr/local/nginx/sbin/nginx
ps ax
ps aux
7.编辑nginx的配置文件,将其用户和组都修改成nginx,并将work_processes设置为2,然后重启服务,查看nginx的进程以及进程的用户
2.安装旧版nginx
1.下载旧版nginx并解压
2.编译、安装。(注意一定不要make install 会覆盖原来的版本)
vim auto/cc/gcc
./configure --prefix=/usr/local/nginx --with-file-aio
make
3.进入生成的二进制文件
4.查看之前的版本是否改变
3.平滑升级
1.备份之前的二进制文件nginx
cd /usr/local/nginx/sbin
cp nginx nginx.old
2.将新版本的nginx降级
#查看nginx的进程关系(其中ps -ef表示显示进程详细信息并显示进程父子关系)
[root@server1 objs]# ps -ef | grep nginx
#nginx发送信号告诉master进程让你的worker进程不要再接收请求了
[root@server1 objs]# kill -USR2 6416
#再次查看nginx进程
[root@server1 objs]# ps -ef | grep nginx
#处理完之后将其关闭
[root@server1 objs]# kill -WINCH 6416
[root@server1 objs]# ps -ef | grep nginx
3.降级完成
4.回退
1.更新失败时,要立即回退,原来备份的二进制文件nginx覆盖更新坏的版本的二进制文件
cd /usr/local/nginx/sbin/
ls
cp -f nginx.old nginx
2.将更新坏的nginx回退成之前的nginx
#查看此时的进程
[root@server1 sbin]# ps -ef | grep nginx
[root@server1 sbin]# kill -USR2 6438
#查看此时的进程
[root@server1 sbin]# ps -ef | grep nginx
[root@server1 sbin]# kill -HUP 6438
#再次查看进程
[root@server1 sbin]# ps -ef | grep nginx
#处理完之后将其关闭
[root@server1 sbin]# kill -WINCH 6438
#再次查看进程
[root@server1 sbin]# ps -ef | grep nginx