Nginx反向代理实现负载均衡配置图解

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

负载均衡配置是超大型机器需要考虑的一些问题,同时也是数据安全的一种做法,下面我来介绍在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反向代理以及负载均衡配置

    项目地址:http://git.oschina.net/miki-long/nginx 前提:最近在研究nginx的用法,在windows上小试了一下,由于windows下不支持nginx缓存配置,所 ...

  2. nginx 反向代理实现负载均衡*配置实战

    重要点: 1配置反向代理多虚拟主机节点服务器 2经过反向代理后的节点服务器记录用户IP 3与反向代理配置相关的更多参数说明 4根据URL目录地址转发 (1)根据URL中的目录地址实现代理转发(动静分离 ...

  3. Nginx反向代理,负载均衡配置

    主配置文件:nginx.conf # For more information on configuration, see: # * Official English Documentation: h ...

  4. nginx反向代理与负载均衡

    一:nginx反向代理与负载均衡配置思路与用法 1.nginx反向代理:就是你去相亲时,媒婆就是这里的代理,让媒婆带你去见姑娘 2.nginx负载均衡:就是有很多的媒婆经过商量给你选出最适合你的姑娘, ...

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

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

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

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

  7. 谁说前端不需要懂-Nginx反向代理与负载均衡

    转:https://juejin.im/post/5b01336af265da0b8a67e5c9 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等.用 ...

  8. [转]Nginx反向代理和负载均衡部署指南

    Nginx反向代理和负载均衡部署指南   1.        安装 1)         从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最 ...

  9. 基于Nginx反向代理及负载均衡

    基于Nginx反向代理及负载均衡 参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass 只要没有被启用,默认就是 ...

随机推荐

  1. Vue 项目中使用less

    首先 你得有 完整的 Vue开发环境第一步 安装less 依赖 npm install less less-loader --save 第二步 修改webpack.config.js文件,配置load ...

  2. N3K license安装

    1.获取设备SN和PAK SN获取: Switch#show license host-id 注意:IOS设备中为:show license udi PAK获取: PAK是单独购买license后,c ...

  3. WLC3504 HA配置

    1.WLC3504 HA连接方式 2.说明 WLC3504可以支持HA,AP SSO和Client SSO. 也是通过RP端口去连接,从active到standby-hot设备同步设备配置包括mana ...

  4. Cisco AP-如何识别思科胖瘦AP

    思科的胖瘦AP识别的方式不止一种,这里简单的总结一些我了解到的方式: 1.根据思科AP的型号 这个和思科不同时期的产品有关系,老一点的和新一些的AP命名上存在差别,这里简单举例: 类型1:AIR-LA ...

  5. 20200213springboot日记

    ------------恢复内容开始------------ ------------恢复内容开始------------ ------------恢复内容开始------------ 数据库管理 L ...

  6. VUE项目开发中使用WebSocket

    初始化WebSocket initWebSocket(){ //初始化weosocket const wsuri = 'ws://10.100.45.8:8888/websocket';//ws地址 ...

  7. C++11常用特性介绍——左值引用、右值引用

    一.左值.右值 1)左值:可以放在赋值号左侧.可以被赋值的值:左值必须要在内存中有实体. 2)右值:必须放在赋值号右侧.取出值赋值给其它变量:右值可以在内存中也可以在CPU寄存器中. 二.引用 引用是 ...

  8. 类似discuz密码的生成规则

    /* 生成一个串,uniqid(rand()): uniqid(prefix,more_entropy) 函数基于以微秒计的当前时间,生成一个唯一的 ID. 如果 prefix 参数为空,则返回的字符 ...

  9. 「学习笔记」FFT 快速傅里叶变换

    目录 「学习笔记」FFT 快速傅里叶变换 啥是 FFT 呀?它可以干什么? 必备芝士 点值表示 复数 傅立叶正变换 傅里叶逆变换 FFT 的代码实现 还会有的 NTT 和三模数 NTT... 「学习笔 ...

  10. bootstrap帮助文档

    概览 深入了解 Bootstrap 底层结构的关键部分,包括我们让 web 开发变得更好.更快.更强壮的最佳实践. HTML5 文档类型 Bootstrap 使用到的某些 HTML 元素和 CSS 属 ...