nginx实现http反向代理+负载均衡

原理
反向代理:反向代理(reverse proxy)方式是指以代理来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时对外就表现为一个反向代理服务器
以图中的例子来说nginx反向代理www.example.com (1)用户访问www.example.com时解析的ip是nginx的地址 (2,3)nginx根据代理协议去后端webserver取请求的内容 (4)再把得到内容返回给客户 对internet暴露的只有nginx 后端webserver完全是透明的
这里发生了两次路由 user->Nginx Nginx->Webserver
upstream是nginx中实现负载均衡的一个模块
配置
nginx配置(upstream)
一、定义upstream地址池
1、
upstream webserver {
    server 192.168.1.2: weight= max_fails= fail_timeout=30s;
    server 192.168.1.3: weight= max_fails= fail_timeout=30s;
}
2、upstream分配方式
rr 轮询 默认 weight(指定轮询几率,weight值和访问率成正比)
max_fails:server通信的失败次数
fail_timeout:fail_timeout时间段内,如果失败的通信次数大于指定的max_fails,则认为proxied server down,并持续fail_timeout定义的时间段
ip_hash(每个请求按访问的ip的hash结果分配 这样每个访问ip固定一台后端服务器 解决session问题)
fair(第三方)
url_hash(第三方)
二、proxy
1、
server
{
...(省略)
location ...(省略) {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
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://webserver;
}
}
2、配置说明
proxy_next_upstream nginx默认判断失败节点状态以connect refuse和time out状态为准 proxy_next_upstream加上其它状态值
proxy_set_header 自定义向后端webserver发送请求header的值 不指定请求头中的host值会被后端webserver第一条server_name配置(第一条server_name匹配规则) #虚拟主机
X-Real-IP 设置为最后一个代理服务器的ip
X-Forwarded-For 记录请求经过的所有代理服务器ip(包括客户端ip)
ps: 如果用户自定义http header中用含下划线的值(app_version_code) nginx默认不做转发
需要在http段设置 underscores_in_headers on;
参考:
http://saiyaren.iteye.com/blog/1914865
https://bbs.konotes.org/thread-7797-1-1.html
nginx实现http反向代理+负载均衡的更多相关文章
- nginx 详解反向代理负载均衡
		
什么是反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度.因此也可以考虑使用这种技术,让代理服务器将请求 均匀转发给多台内部Web服务器 ...
 - Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向
		
原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...
 - nginx详解反向代理,负载均衡,LNMP架构上线动态网站
		
1.nginx介绍 nginx.org Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/ ...
 - nginx 虚拟主机+反向代理+负载均衡
		
nginx是一款免费.开源的http服务器,它是由俄罗斯程序设计师开发的,官方测试,nginx能支撑5万的并发量,主要功能有虚拟主机.反向代理和负载均衡等. nginx配置 # 全局块 ... # e ...
 - 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器
		
Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...
 - 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现
		
实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...
 - Nginx 反向代理 负载均衡 虚拟主机配置
		
Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...
 - Nginx 反向代理 负载均衡 虚拟主机
		
Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...
 - 十.nginx反向代理负载均衡服务实践部署
		
期中集群架构-第十章-nginx反向代理负载均衡章节章节====================================================================== 0 ...
 
随机推荐
- git 保存本地更改而不需要推到远程
			
git commit 修改到本地分支 repo sync . 更新分支 git checkout local 切换到本地分支 git rebase 远程 更新远程分支到本地并且将本地分支节点推到最顶
 - codevs   http://www.codevs.cn/problem/?problemset_id=1    循环、递归、stl复习题
			
12.10高一练习题 1.要求: 这周回顾复习的内容是循环.递归.stl. 不要因为题目简单就放弃不做,现在就是练习基础. 2.练习题: (1)循环 题目解析与代码见随笔分类 NOI题库 htt ...
 - 学习C++.Primer.Plus 7 函数
			
C++的返回值类型不能是数组 函数原型中的变量名相当于点位符,因此不要求提供变量名. void cheers(int); C++中不指定参数列表时就使用活力号: void saybye(...); 通 ...
 - python 图
			
class Graph(object): def __init__(self,*args,**kwargs): self.node_neighbors = {} self.visited = {} d ...
 - Python.Django视频教程(全13集)
			
Python.Django视频教程(全13集)教程目录: 下载地址:http://www.fu83.cn/thread-205-1-1.html
 - .NET技术在中国为什么老被人嫌弃
			
这个话题有点自黑的意思,我从.NET 1.1开始玩.NET,到现在已经11年了,我是看着.NET成长起来,在中国壮大的,也见证了近几年.NET被各种嫌弃,其实说到底还是中国的架构师太少,我是说真正懂行 ...
 - 深入理解OOP(第一天):多态和继承(初期绑定和编译时多态)
			
在本系列中,我们以CodeProject上比较火的OOP系列博客为主,进行OOP深入浅出展现. 无论作为软件设计的高手.或者菜鸟,对于架构设计而言,均需要多次重构.取舍,以有利于整个软件项目的健康构建 ...
 - Bootstrap系列 -- 9. 表格
			
一. Bootstrap 表格样式支持 Bootstrap提供了六种不同风格的样式支持,其中一个基础样式,4个附件样式,1个响应式设计样式 1. .table:基础表格 2. .table-strip ...
 - dnsunlocker解决
			
环境:windows 10 中文企业版,firefox47, chrome51 安装了某个国外程序后,浏览器各种不正常,打开网页慢,或是无法打开,更严重的是会弹广告,各种广告. 然后在控制面板中卸载了 ...
 - android之自定义广播
			
布局文件 点击按钮发送广播 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmln ...