come from: http://www.php100.com/html/program/nginx/2013/0905/5529.html

负载均衡配置是超大型机器需要考虑的一些问题,同时也是数据安全的一种做法,下面我来介绍在nginx中反向代理 负载均衡配置图解,大家可参考本文章来操作。

首先简单的介绍下nginx作为反向代理实现负载均衡。

反向代理方式是指以反向代理服务器来接受互联网上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给互联网上请求连接的客户端,此时反向代理服务器对外就表现为一个服务器。让互联网上的主机通过不同的域名访问不同的内部网主机资源,使内部网主机免受外部网主机攻击,实现负载均衡和缓存功能,很大程度上减轻web服务器的负担?提高访问速度。

一个简单的Nginx作为反向代理实现负载均衡。

就如上图所示,我简单的建了一个环境,以3台电脑(windows系统,这里是简单搭建所以用windows,建议还是用linux系统)。

环境介绍如下:

1.Nginx服务器192.168.2.3,安装nginx作为反向代理服务器(80端口)。

2.1台电脑安装nginx+php 192.168.2.2(80端口),作为web服务器1

3.1台电脑安装apache+php 192.168.2.8(80端口),作为web服务器2

(一)针对不同请求的负载均衡。

nginx仅仅处理静态页面,动态的页面(php请求)统统都交付给后台的apache来处理。也就是说,可以把我们网站的静态页面或者文件放置到nginx的目录下;动态的页面和数据库访问都保留到后台的apache服务器上。

下面就用个例子来说明一下,分别访问html和php网页,test.html在nginx目录下,test.php在apache目录下。

修改默认的nginx.conf,大概在59~61行,去掉前面的#号,重启nginx。

#location ~ .php$ {#    proxy_pass   http://127.0.0.1;#}改为        location ~ .php$ {            proxy_pass   http://127.0.0.1:8080;}

分别访问,出现如下图已经能够针对不同请求访问服务器了

这样当我们访问192.168.2.3/index.html的时候,前端的nginx会自动进行响应;当访问192.168.2.3/test.php的时候(这个时候nginx目录下根本就没有该文件),但是通过上面的设置location ~ .php$(表示正则表达式匹配以.php结尾的文件,详情参看location是如何定义和匹配的,官网文档http://wiki.nginx.org/NginxHttpCoreModule) ,nginx服务器会自动pass给192.168.2.3的apache服务器了。该服务器下的test.php就会被自动解析,然后将test.php的结果页面返回给nginx,然后nginx进行显示。

实现多个服务器针对不同请求的负载均衡的例子:

访问静态页面test.html,最前端的nginx直接进行响应;

访问php页面test.php,192.168.2.3:8080的Apache进行响应;

访问目录phpMyAdmin下的页面的话,192.168.2.2:80 的Apache进行响应

修改原始默认的nginx.conf的server模块部分(大概在59~61行):

#location ~ .php$ {#    proxy_pass   http://127.0.0.1;#}修改为        location ^~ /phpMyAdmin/ {             proxy_pass 192.168.2.2:80 ;}        location ~ .php$ {              proxy_pass 192.168.2.3:8080 ;}
上面第一个部分location ^~ /phpMyAdmin/,表示不使用正则表达式匹配(^~),而是直接匹配,也就是如果客户端访问的URL是以http://192.168.2.3/phpMyAdmin/ 开头的话(本地的nginx目录下根本没有phpMyAdmin目录),nginx会自动pass到192.168.2.2:80 的Apache服务器,该服务器对phpMyAdmin目录下的页面进行解析,然后将结果发送给nginx显示。

(二)访问同一页面的负载均衡

访问http://192.168.2.3/test.php 这个同一页面的时候,我们实现三台服务器的负载均衡(实际情况中,这两个服务器上的数据要求同步一致)。

重新配置nginx.conf,使用默认nginx.conf。

1.首先删除server下的一些配置,大概是36~46行,以下配置行删除。

listen       80;        server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;        location / {            root   html;            index  index.html index.htm;}
2.在配置文件nginx.conf的http模块中添加服务器集群server cluster的定义。

upstream myCluster {        server 192.168.2.3:8080 ;        server 192.168.2.2:80 ;        server 192.168.2.8:80 ;}
表示这个server cluster包含3台服务器

3.然后在server模块中定义负载均衡

location ~ .php$ {        proxy_pass http://myCluster ;         proxy_redirect off;         proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
proxy_pass http://myCluster ; 这里的名字和上面的cluster的名字相同

配置好后,当访问http://192.168.2.3/test.php 页面,nginx目录下根本没有该文件,但是它会自动将其pass到myCluster定义的服务器群,分别由上述的3台服务器中的一台来做处理。

上面在定义upstream的时候每个server之后没有定义权重,表示两者均衡;如果希望某个更多响应的话,可以加weight

upstream myCluster {        server 192.168.2.3:8080 weight=5;        server 192.168.2.2:80 ;        server 192.168.2.8:80 ;}
这样表示5/7的几率访问第一个server,1/7访问第二个、第三个。另外还可以定义max_fails和fail_timeout等参数。

所以我们使用nginx的反向代理服务器reverse proxy server的功能,将其布置到多台apache server的前端。

nginx仅仅用来处理静态页面响应和动态请求的代理pass,后台的apache服务器来对前台pass过来的动态页面进行处理并返回给nginx。

实际应用中,各个服务器分别保留相同的程序和数据,需要考虑两者的数据同步。

Nginx反向代理实现负载均衡配置图解相关推荐

  1. Nginx反向代理以及负载均衡配置

    一 .nginx 的优缺点: nginx 相对 apache 的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则 ...

  2. 学完Nginx/OpenResty详解,反向代理与负载均衡配置,能涨薪多少

    反向代理与负载均衡配置 接下来介绍Nginx的重要功能:反向代理+负载均衡.单体Nginx的性能虽然不错,但也是有瓶颈的.打个比方:用户请求发起一个请求,网站显示的图片量比较大,如果这个时候有大量用户 ...

  3. Nginx代理支持GRPC的反向代理和负载均衡配置

    Nginx代理gRPC反向代理和负载均衡配置 linux版本安装 一.准备和安装 #指定目录安装( /home/yyt/nginxgrpc) mkdir /home/yyt/nginxgrpc cd ...

  4. 从0开始,在Linux中配置Nginx反向代理、负载均衡、session共享、动静分离

    写这篇文章花费了我近一周的时间,参考网上许多优秀的博客文章,我不敢说写的很好,至少很全很详细.本文先介绍原理部分,然后再进行实战操作,我认为这样才会有更深的理解,不过这也导致了文章篇幅很长.但是,如果 ...

  5. nginx反向代理及负载均衡使用详解

    nginx反向代理及负载均衡使用说明 文章目录 nginx反向代理及负载均衡使用说明 集群介绍 负载均衡架构图 为什么要使用集群 集群种类 负载均衡概念说明 压力测试 反响代理概念说明 反向代理图解 ...

  6. 懂点 Nginx 反向代理与负载均衡,是面试加分项没有之一

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等 ...

  7. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    本站点停止更新,请访问:blog.coocap.com 相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tom ...

  8. 【转】Nginx反向代理和负载均衡

    原文链接:http://www.cnblogs.com/shuoer/p/7820899.html Nginx反向代理和负载均衡 环境说明 由于我使用的是windows系统,所以我用虚拟机虚拟出来了3 ...

  9. nginx ------反向代理和负载均衡

    nginx ------反向代理和负载均衡 最近由于公司的业务增长 服务器承受不住压力经常出现崩溃现象 为了解决 使用nginx的负载均衡解决,以下是操作步骤: 1.nginx 的负载均衡:将压力分散 ...

最新文章

  1. 好书推荐:《Implementing Database Security and Auditing》-数据库应用安全
  2. Vb 与 Vc 的区别
  3. 录像带转存电脑的方法_《波西亚时光》录像带使用方法介绍
  4. python中weekday_[转载] Python日历模块| 使用示例的weekday()方法
  5. git21天打卡day19-新建远程仓库
  6. Spring配置实现AOP
  7. Windows 8实例教程系列 - 布局控制
  8. 求二叉树的深度(C++)
  9. bzoj 1556 墓地秘密 —— 状压DP
  10. 当Kubernets遇上阿里云 -之七层负载均衡(一).
  11. c#图片反色,取底色,照片底色效果
  12. AD域控与ISA防火墙控制上网
  13. PAT-1068 万绿丛中一点红
  14. Juniper防火墙配置备份
  15. 用微信扫一扫功能扫描二维码下载安装APK不能用,不能打开APK下载链接的解决方案
  16. chromedriver镜像
  17. 纳豆的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. IE6双倍边距问题及其解决方法
  19. Charles You may need to configure your browser ...【解决办法】
  20. dell inspiron 只有一个飞行模式 没有wifi_Kindle 上的电子书为什么没有封面?恢复封面你只需这样做!...

热门文章

  1. Unparseable date: “2019-03-27“
  2. 前度控制器源代码分析
  3. xd使用技巧_adobe xd高级技巧
  4. r730xd外置光驱安装linux,PowerEdge r730xd 安装centos 6.7
  5. 用root登录亚马逊云
  6. saas系统服务器搭建,SaaS平台部署.doc
  7. 深度学习常见问题整理
  8. Zedboard(一)开发环境Vivado
  9. 1146 mysql_MySQL--ERROR 1146 (42S02):table doesn’t exist
  10. OpenGL底层实现原理