nginx负载均衡的理解与实际应用

公司有一个公网IP,有两台apache服务器,需求是想让apache服务器映射到公网上去,让公网用户可以访问到,然而如果在路由器上做映射的话就不是很好,因为路由器上的IP映射都是“私网IP:端口”<>“公网IP:对应端口”,两台私网的apache服务器的内容都不一样,但都是80端口,做映射没法做的。如果要做的话只能这样192.168.10.38:80 210.22.3.91:80

192.168.10.40:80 210.22.3.91:81

这样的话,你就只能让客户加端口访问了,这个不太友好,这就想到了做nginx反向代理了

nginx的编译安装这里就略了,主要反向代理代码如下

编辑反向代理服务器配置文件:
vim /usr/local/nginx/conf/reverse-proxy.conf

server

{

listen 80;

server_name www.aaa.com;

location / {

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://192.168.10.38:80;

}

access_log logs/www.aaa.com_access.log;

}

server

{

listen 80;

server_name www.ccc.com;

location / {

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://192.168.10.40:80;

}

access_log logs/www.ccc.com_access.log;

}

然后重新加载nginx配置文件,使之修改生效,再把www.aaa.com和www.ccc.com域名指向公司静态IP,即申请DNS的时候直接申请两个域名再加上公司的公网IP,例如这样:210.22.3.91 www.aaa.com www.ccc.com, 这样就成功的做到了在浏览器中输入www.aaa.com的时候访问的内网服务器192.168.10.38的80端口,输入www.ccc.com访问192.168.10.40的80端口的作用。这里有一个问题,我在内网服务器中其实是有三个80端口的,两个apache一个nginx都是80端口,这三个服务器对外的时候都是一个整体,都是80端口,那么在我从公网也就是外网去访问www.aaa.com或者去访问www.ccc.com,怎么能保证一定访问的就是nginx代理服务器呢?其中nginx代理服务器的内网IP是192.168.10.37,外网IP是210.22.3.91。

那么先抛开这些问题不说,首先说一说原理,nginx反向代理时,客户端即外网是完全不知道内网服务器的存在的,也就是说他只是按照DNS服务器的解析,去访问www.aaa.com时,直接就去找210.22.3.91这个IP,nginx看请求是www.aaa.com,在代理配置中去找,其实是对应着内网192.168.10.38:80,于是nginx就去将这个页面的内容拿过来作为自己的东西给访问者,好像这些内容本身就是他自己的一样。对访问者而言,nginx代理服务器就是“他要的那个服务器”

根据原理我个人认为需要在其余两台apache服务器建立防火墙,即只允许nginx服务器对其80端口进行访问,而其余主机对80端口的访问一律拒绝。这样就可以解决外网主机去访问www.aaa.com或者www.ccc.com,会直接转到nginx代理服务器上。从而让nginx代理服务器发挥作用。

参考:http://www.ttlsa.com/nginx/use-nginx-proxy/

时间: 2024-07-31 02:38:55

nginx负载均衡的理解与实际应用的相关文章

学习下nginx负载均衡--深入理解nginx

作为代理服务器,一般都需要向上游服务器转发请求.这里的负载均衡是指通过一种策略尽量把请求平均的分发都上游服务器 1.upstream 语法 upstream name {} 配置快: http 栗子(实验通过,每次请求均匀的分布在两台机器上) upstream backend { server 192.168.1.100:8080; server 192.168.1.101:8080; } server { location / { proxy_pass  http://backend; } }

nginx负载均衡

nginx负载均衡 Nginx负载均衡的理解 Nginx是一个轻量级的.高性能的WebServer,他主要可以干下面两件事: 作为http服务器(和apache的效果一样) 作为反向代理服务器实现负载均衡 现在Nginx到处都可以见到,经常会看到宕机后的网页会显示nginx的字样,这也说明Nginx由于高性能.使用配置简.开源单这些特点被越来越多的用户所接受,所使用. 其中第一种作为http服务器,结合php-fpm进程,对发来的请求进行处理,nginx本身并不会解析php,他只是作为一个服务器

Nginx 负载均衡-加权轮询策略剖析

本文介绍的是客户端请求在多个后端服务器之间的均衡,注意与客户端请求在多个nginx进程之间的均衡相区别(Nginx根据每个工作进程的当前压力调整它们获取监听套接口的几率,那些当前比较空闲的工作进程有更多机会获取到监听套接口,从而客户端的请求到达后也就相应地被它捕获并处理).如果Nginx是以反向代理的形式配置运行,那么对请求的实际处理需要转发到后端服务器运行,如果后端服务器有多台,如何选择一台合适的后端服务器来处理当前请求,就是本文要说的负载均衡.这两种均衡互不冲突并且能同时生效. nginx不

解析Nginx负载均衡

摘要:对于一个大型网站来说,负载均衡是永恒的话题.随着硬件技术的迅猛发展,越来越多的负载均衡硬件设备涌现出来,如F5 BIG-IP.Citrix NetScaler.Radware等等,虽然可以解决问题,但其高昂的价格却往往令人望而却步,因此负载均衡软件仍然是大部分公司的不二之选.nginx作为webserver的后起之秀,其优秀的反向代理功能和灵活的负载均衡策略受到了业界广泛的关注.本文将以工业生产为背景,从设计实现和具体应用等方面详细介绍nginx负载均衡策略. 关键字:nginx 负载均衡

nginx负载均衡集群中的session共享说明

在网站使用nginx+php做负载均衡情况下,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 下面罗列几种nginx负载均衡中session同步的方式 1)不使用session,换用cookiesession是存放在服务器端的,cookie是存放在客户端的,我们可以把用户访问页面产生的session放到cookie里面,就是以cookie为中转站.你访问web服务器A,产生了session然后把它放到cookie里面,当

Keepalived+LVS+Nginx负载均衡之高可用

Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常运行.针对系统架构设计的高可用要求,我们需要解决Nginx负载均衡出现单机故障时,系统正常运行的需求.所以系统架构引入Keepalived组件,实现系统高可用. 一.Keepalived介绍 Keepalived是分布式部署系统解决系统高可用的软件,结合LVS(Linux Virtual Serve

Nginx负载均衡详解

upstream mysvr { server 192.168.10.121:3333; server 192.168.10.122:3333; } server { .... location ~*^.+$ { proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表 }   upstream mysvr {  server http://192.168.10.121:3333; server http://192.168.10.122:3333; } serv

Net分布式系统之三:Keepalived+LVS+Nginx负载均衡之高可用

上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常运行.针对系统架构设计的高可用要求,我们需要解决Nginx负载均衡出现单机故障时,系统正常运行的需求.所以系统架构引入Keepalived组件,实现系统高可用. 一.Keepalived介绍 Keepalived是分布式部署系统解决系统高可用的软件,结合LVS(Linux Virtual Server)使用,其功能类似于heartbeat,解决单机宕机的问

解析 Nginx 负载均衡

nginx的负载均衡策略可以划分为两大类:内置策略和扩展策略.内置策略包含加权轮询和ip hash,在默认情况下这两种策略会编译进nginx内核,只需在nginx配置中指明参数即可.扩展策略有很多,如fair.通用hash.consistent hash等,默认不编译进nginx内核.由于在nginx版本升级中负载均衡的代码没有本质性的变化,因此下面将以nginx1.0.15稳定版为例,从源码角度分析各个策略. 2.1.           加权轮询(weighted round robin)