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发布于2004年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 http://nginx.org/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 http://www.nginx.org/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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值