100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Nginx系列1: 正向代理和反向代理 Nginx工作原理 Nginx常用命令和升级 搭建Nginx负载均衡

Nginx系列1: 正向代理和反向代理 Nginx工作原理 Nginx常用命令和升级 搭建Nginx负载均衡

时间:2019-08-06 20:05:10

相关推荐

Nginx系列1: 正向代理和反向代理 Nginx工作原理 Nginx常用命令和升级 搭建Nginx负载均衡

一、什么是正向代理、什么是反向代理

1. 正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

访问google使用代理服务器

2. 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器

代理访问自己的内部服务器

或者看下图:

总结

正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端.

反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端

正向代理中,proxy和client同属一个LAN,对server透明;

反向代理中,proxy和server同属一个LAN,对client透明。

实际上proxy在两种代理中做的事都是代为收发请求和响应,不过从结构上来看正好左右互换了下,所以把后出现的那种代理方式叫成了反向代理

正向代理: 买票的黄牛

反向代理: 租房的代理

二、Nginx工作原理

Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。

Nginx的模块从结构上分为核心模块、基础模块和第三方模块:

核心模块:HTTP模块、EVENT模块和MAIL模块

基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块,

第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。

Nginx的高并发得益于其采用了epoll模型,与传统的服务器程序架构不同,epoll是linux内核2.6以后才出现的。Nginx采用epoll模型,异步非阻塞,而apache采用的是select模型:

Select特点:select 选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,select需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。

epoll的特点:epoll对于句柄事件的选择不是遍历的,是事件响应的,就是句柄上事件来就马上选择出来,不需要遍历整个句柄链表,因此效率非常高。

1.什么是Nginx

Nginx ("engine x")是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名

常见的应用服务器: Apache/Microsoft IIS/Tomcat/Lighttpd/Nginx

2. Nginx的特点和组成

特点:Nginx特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好

组成:Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单

核心模块:HTTP模块、EVENT模块和MAIL模块

基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块,

第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。

3.Nginx的优点

1)高并发响应性能非常好,官方Nginx处理静态文件并发5w/s

2)反向代理性能非常强。(可用于负载均衡)

3)内存和cpu占用率低。(为Apache的1/5-1/10)

4)对后端服务有健康检查功能。

5)支持PHP cgi方式和fastcgi方式。

6)配置代码简洁且容易上手。

说明:处理静态文件是nginx最主要的功能

4.Nginx安装

4.1、编译环境gcc g++ 开发库之类的需要提前装好

yum-y install make zlib zlib-devel gcc-c++libtool openssl openssl-devel

4.2、首先安装PCRE pcre功能是让nginx有rewrite功能

检查系统里是否安装了pcre软件

rpm -qa pcre 如果没有显示说明没有安装 反之安装过

rpm -e --nodeps pcre 删除pcre

安装pcre:yum install pcre-devel pcre -y

4.3、nginx安装

#下载Nginx源码包

cd /usr/local

wget /download/nginx-1.9.0.tar.gz

#解压Nginx源码包

tar -zxvf nginx-1.9.0.tar.gz

#进入解压目录,开始安装,默认安装地址 /usr/local/nginx

cd nginx-1.9.0

./configure --prefix=/usr/local/nginx --with-http_ssl_module &&make &&make install

#自此Nginx安装完毕

检查nginx配置文件是否正确,返回OK即正确。

/usr/local/nginx/sbin/nginx -t

#然后启动nginx,

/usr/local/nginx/sbin/nginx 回车即可。

#查看进程是否已启动:

ps aux |grep nginx

4.4 页面访问

4.5 卸载nginx

删除nginx文件即可

rm -rf /usr/local/nginx

三、Nginx常用命令和升级

1. Nginx常用命令

查看nginx进程:

ps -ef|grep nginx或者ps aux |grep nginx

说明:nginx的进程由主进程和工作进程组成。

启动nginx:

/usr/local/nginx/sbin/nginx

说明:启动结果显示nginx的主线程和工作线程,工作线程的数量跟nginx.conf中的配置参数worker_processes有关。

平滑启动nginx:

kill -HUP 'cat /var/run/nginx.pid'

或者

/usr/local/nginx/sbin/nginx -s reload

其中进程文件路径在配置文件nginx.conf中可以找到。

平滑启动的意思是在不停止nginx的情况下,重启nginx,重新加载配置文件,启动新的工作线程,完美停止旧的工作线程。

完美停止nginx:

kill -QUIT 'cat /var/run/nginx.pid'

快速停止nginx :

kill -TERM 'cat /var/run/nginx.pid'

或者

kill -INT `cat /var/run/nginx.pid`

完美停止工作进程(主要用于平滑升级):

kill -WINCH 'cat /var/run/nginx.pid'

强制停止nginx:

pkill -9 nginx

检查对nginx.conf文件的修改是否正确:

nginx -t -c /etc/nginx/nginx.conf 或者/usr/local/nginx/sbin/nginx -t

停止nginx的命令:

/usr/local/nginx/sbin/nginx -s stop

查看nginx的版本信息:

/usr/local/nginx/sbin/nginx-v

查看完整的nginx的配置信息:

/usr/local/nginx/sbin/nginx-V

2. Nginx升级

下载所需版本的Nginx:

wget /download/nginx-1.4.2.tar.gz

获取旧版本nginx的configure选项:

/usr/local/nginx/sbin/nginx -V

编译新版本的nginx

tar -xvf nginx-1.4.2.tar.gz

cd nginx-1.4.2

./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module

make

备份旧版本的nginx可执行文件,复制新版本的nginx可执行文件:

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

cp objs/nginx /usr/local/nginx/sbin/

测试新版本nginx是否正常:

/usr/local/nginx/sbin/nginx -t

平滑重启升级nginx:

kill –USR2 `cat /usr/local/nginx/log/nginx.pid`

旧版本Nginx的pid变为oldbin,这是旧版本和新版本的nginx同时运行,过一段时间等旧nginx处理完用户请求后,执行下面操作

从容关闭旧版本的Nginx进程

kill -WINCH `cat /usr/local/nginx/log/nginx.oldbin`

决定是否升级到新版的nginx:

kill –HUP `cat /usr/local/nginx/log/nginx.oldbin` ##nginx在不重载配置文件启动工作进程

kill –QUIT `cat /usr/local/nginx/log/nginx.oldbin` ##关闭旧版nginx

验证nginx是否升级成功

/usr/local/nginx/sbin/nginx –V ###显示下图则升级成功

四、搭建Nginx负载均衡

1. nginx负载均衡原理图

说明:

在nginx的nginx.conf里面监听80端口,并配置后端tomcat的地址,前端访问的时候即可转发到后端的tomcat

2. 搭建步骤

2.1 准备两个端口不一样的Apache分别为8080,8081

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。