1.案例实现Nginx反向代理; 2.反向代理的理论知识拓展.

一, 实验Nginx的反向代理功能

使用Nginx实现Web反向代理功能,实现如下功能:

  • 后端Web服务器两台,可以使用httpd实现
  • Nginx采用轮询的方式调用后端Web服务器
  • 两台Web服务器的权重要求设置为不同的值
  • 最大失败次数为1,失败超时时间为30秒

实验拓扑图:

1. 部署实施后端Web服务器

后端Web服务器可以简单使用yum方式安装httpd实现Web服务,为了可以看出后端服务器的不同,可以将两台后端服务器的首页文档内容设置为不同的内容。

1.1 部署后端Web1服务器

web1] # yum -y install httpd

web1]# echo "192.168.2.100" > /var/www/html/index.html

web1]# systemctl restart httpd

web1]# firewall-cmd --set-default-zone=trusted

web1]# setenforce 0

1.2 部署后端Web2服务器

web2] # yum -y install httpd

web2]# echo "192.168.2.100" > /var/www/html/index.html

web2]# systemctl restart httpd

web2]# firewall-cmd --set-default-zone=trusted

web2]# setenforce 0

2. 配置Nginx服务器,添加服务器池,实现反向代理功能

proxy]# vim /usr/local/nginx/conf/nginx.conf

...

http{

...

upstream webserver {         #使用upstream定义后端服务器集群,集群名称可以任意定义,如webserver

server 192.168.2.100:80;      #使用server定义集群中的具体服务器和端口

server 192.168.2.200:80;

}

...

server {

listen        80;

server_name localhost;

location / {

proxy_pass http://webserver;       #通过proxy_pass将用户的请求转发给webserver集群

}

}

proxy]# /usr/local/nginx/sbin/nginx -s reload   //重新加载配置

client]# curl http://192.168.4.5     #多次访问代理服务器测试轮询效果

...   //多次访问代理服务器

3. 配置upstream服务器集群池属性

proxy]# vim /usr/local/nginx/conf/nginx.conf

...

http {

...

upstream webserver {

server 192.168.2.100 weight=1 max_fails=1 fail_timeout=30;

server 192.168.2.200 weight=2 max_fails=2 fail_timeout=30;

server 192.168.2.101 down;

}

#weight设置服务器权重值,默认值为1

#max_fails设置最大失败次数

#fail_timeout设置失败超时时间,单位为秒

#down标记服务器已关机,不参与集群调度

...

server {

listen        80;

server_name localhost;

location / {

proxy_pass http://webserver;      #调用集群

}

}

proxy]# /usr/local/nginx/sbin/nginx -s reload       //重新加载配置

web1]# systemctl stop httpd        //关闭一台后端服务器,如web1

client]# curl http://192.168.4.5     //多次访问代理服务器测试轮询效果

...     //多次访问代理服务器

web1]# systemctl start httpd      //再次启动后端服务器web1的httpd

client]# curl http://192.168.4.5     //多次访问代理服务器测试轮询效果

...   //多次访问代理服务器

4. 配置upstream服务器集群的调度算法

4.1 设置相同客户端访问相同Web服务器

proxy ]# vim /usr/local/nginx/conf/nginx.conf

...

http {

...

upstream webserver {

ip_hash;        #通过ip_hash设置调度规则为:相同客户端访问相同服务器

server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;

server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;

}

...

server {

listen        80;

server_name www.tarena.com;

location / {

proxy_pass http://webserver;

}

}

proxy]# /usr/local/nginx/sbin/nginx -s reload   //重新加载配置

client]# curl http://192.168.4.5     #多次访问代理服务器测试轮询效果

...   //多次访问代理服务器

二, Nginx反向代理的知识拓展

Nginx与Apache一样, 是一款轻量级的web服务器软件,由俄罗斯人研发,它支持数以万计的高并发访问,并且稳定,开源,跨平台.

是一款高性能的http服务器和反向代理服务器,实现负载均衡是其作为反向代理服务器的重用功能之一.

例如,国内的jd网站,每天同时连接到网站的访问人数已经爆表,单个服务器远远不能满足人民日益增长的购买欲望了,此时一个名词应运而生:分布式部署, 也就是通过部署多台服务器来解决访问人数限制的问题;

通过上述图解可知,多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时请求的来源明确的,但是请求具体由哪台服务器处理就不明确了,Nginx扮演的就是一个反向代理角色。客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。

反向代理,"它代理的是服务端,代服务端接收请求",主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

反向代理的主要作用:
(1)保证内网的安全.我们通常将反向代理作为公网访问地址,Web服务器位于内网
(2)负载均衡,通过反向代理服务器来优化网站的负载量

负载量:客户端向代理服务器发送的请求数量,而请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则。

所以,将代理服务器接收到的请求,按照规则分发的过程,称为负载均衡;常用的调度算法有weight(轮询),ip_hash等.

负载均衡在实际项目操作过程中,有硬件负载均衡和软件负载均衡两种,硬件负载均衡也称为硬负载,如F5负载均衡,相对造价昂贵成本较高,但是数据的稳定性安全性等等有非常好的保障,如中国移动中国联通这样的公司才会选择硬负载进行操作;更多的公司考虑到成本原因,会选择使用软件负载均衡,软件负载均衡是利用现有的技术结合主机硬件实现的一种消息队列分发机制。

结束.

Nginx的反向调度功能的更多相关文章

  1. nginx的反向代理功能和缓存功能

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  2. nginx的反向代理功能和负载均衡

    使用nginx实现反向代理 Nginx只做请求的转发,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定把请求转发给谁. 1安装tomcat 在一个虚拟机上创建两个t ...

  3. (转)FIKKER和Nginx的反向代理服务功能对比评测报告

    转自:http://tieba.baidu.com/p/1268737304 针对高并发反向代理服务器 NGINX和FIKKER评测报告 测试硬件环境:服务端:CPU:E5200硬盘:SATA 133 ...

  4. nginx笔记 安装nginx 配置 反向代理 多虚拟主机

    1,检测linux上是否 通过yum安装了nginxrpm   -qi  nginx 2.安装nginx之前的依赖包yum install gcc patch libffi-devel python- ...

  5. Linux安装Nginx使用反向代理

    nginx的反向代理功能(自带了反向代理的功能,天生的二道贩子)1.实验环境准备准备2个服务器,都安装好nginx软件nginx1 192.168.13.79 作为web服务器 (理解为火车票售票点) ...

  6. CentOS 7 安装Nginx做反向代理

    题记 须要使用nginx的反向代理功能,測试环境为centos+NGINX 1.8.0. 跳过一些繁琐的问题,直接记录核心 步骤 (1)centos 安装在VM中.因此须要注意网络连接问题 (2)安装 ...

  7. nginx主配置文件学习,以及nginx的反向代理和负载均衡

    1.nginx.conf主配置文件学习 worker_processes : 表示nginx的进程数,根据CPU的核数来定义,起到优化的作用.通过cat /proc/cpuinfo来查看核数 even ...

  8. Nginx 之六: Nginx服务器的反向代理功能

    一:Nginx作为正向代理服务器: 1.正向代理:代理(proxy)服务也可以称为是正向代理,指的是将服务器部署在公司的网关,代理公司内部员工上外网的请求,可以起到一定的安全作用和管理限制作用,正向代 ...

  9. Nginx 之六: Nginx服务器的正向及反向代理功能

    一:Nginx作为正向代理服务器: 1.正向代理:代理(proxy)服务也可以称为是正向代理,指的是将服务器部署在公司的网关,代理公司内部员工上外网的请求,可以起到一定的安全作用和管理限制作用,正向代 ...

随机推荐

  1. 3D Computer Grapihcs Using OpenGL - 01 环境设置

    这系列文章是我学习Youtube上一套OpenGL教程的笔记,自己对教程的案例重新制作并且做了一定程度的修改(更有条理,且修正了一些问题).后续将持续更新. Visual Studio 2017工程 ...

  2. Solr搜索引擎基础

    搜索引擎是指一个庞大的互联网资源数据库,如网页,新闻组,程序,图像等.它有助于在万维网上定位信息. 用户可以通过以关键字或短语的形式将查询传递到搜索引擎中来搜索信息. 搜索引擎然后搜索其数据库并向用户 ...

  3. Mybatis,模糊查询语句,以及传参数的正确写法

    不多说直接上代码! 接口: public interface CommodityMapper { int deleteByPrimaryKey(Integer productId); int inse ...

  4. 冲刺周六 Fighting SaturDay

    一.Saturday照片 二.项目分工 三.今日份燃尽图 四.项目进展 码云团队协同环境构建完毕 利用Leangoo制作任务分工及生成燃尽图 完成AES加解密部分代码 用代码实现对文件的新建.移动.复 ...

  5. python的filter,reduce,map

    1.filter filter(func,iter) 只能处理一个参数(iter),仅仅将满足func方法的数值过滤出来 如: a = [,,,,] list(filter(lambda x:x> ...

  6. Git 创建版本库并实现本地上传数据到GitHub库

    版本库又叫做仓库,其实也是一个目录,这个目录里的所有文件都是被Git管理着,对每个文件的修改,删除,Git都会进行记录,方便我们对其进行跟踪. 因为本地是window环境,我们先从官网下载好windo ...

  7. MySQL主从复制 报错处理

    基于GTID的主从复制: 跳过一个事务: SET @@session.gtid_next = '冲突的GTID号';BEGIN;COMMIT; SET gtid_next = 'AUTOMATIC';

  8. springboot定时任务出错 Unexpected use of scheduler.

    java.lang.IllegalStateException: Unexpected use of scheduler. 在启动类加: @Bean public ThreadPoolTaskSche ...

  9. VMware 虚拟化编程(14) — VDDK 的高级传输模式详解

    目录 目录 前文列表 虚拟磁盘数据的传输方式 Transport Methods Local File Access NBD and NBDSSL Transport SAN Transport Ho ...

  10. tensorflow和keras的安装

    1 卸载tensorflow方法,在终端输入:  把protobuf删除了才能卸载干净. sudo pip uninstall protobuf sudo pip uninstall tensorfl ...