nginx的反向代理和负载均衡的一个总结
之前一直觉的nginx的反向代理和负载均衡很厉害的样子,最近有机会接触了一下公司的这方面的技术,发现技术就是一张窗户纸呀,捅破了啥都明白了!
接下来先看一下nginx的反向代理:
简单的来说就是nginx不去自己处理php相关的请求,而是将php的相关的请求转发给apache来进行处理。

上面就是一个比较简单的一个反向代理的流程图,其实我们也可以叫做“动静分离”,只是反向代理更加的规范。
来看一下它的一个配置:
使用proxy_pass即可进行反向代理,官方给的说明例子:
Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except
我们可以使用类似于下面的这种方法来进行配置:
location / {
proxy_pass http://127.0.0.1/remote/; --- http是必须要带的不然的话 是不会生效的
}
上面就是反向代理的一个简单的使用配置。
那接下来我们来看一下负载均衡的一个概念:
其实就是多台服务器进行共同工作,反向代理的后端如果有多台服务器,那自然可以形成负载均衡,但我们考虑一下proxpy_pass如何指向多台服务器?
那我们其实可以将多台的服务器用一个upstream 上游的服务器组指定绑定在一起并起个组名,然后使用proxpy_pass指向该组即可。
我们来看一下upstream的一个简单的定义:
Syntax: upstream name { ... }
Default: —
Context: http
来看一下下面一个简单的例子:
upstream backend {
server backend1.example.com weight=; //这台机器会承担5个请求,剩下的机器会承担剩余的请求压力
server 127.0.0.1: max_fails= fail_timeout=30s;
server unix:/tmp/backend3;
server backup1.example.com backup;
}
server {
location / {
proxy_pass http://backend;
}
}
默认的均衡的算法很简单,就是针对后端服务器的顺序,逐个请求.
上面就是一个简单的负载均衡的一个例子。
那我们打开日志发现,$remot_addr变成了nginx的IP,而不是用户客户端的原来的IP,那这时候怎么办?
Proxy_set_header X-Forwarded-For $remote_addr;
在每个location中加上这么一句话,就ok了。
再附一张我们之前测试的一个案例:

nginx的反向代理和负载均衡的一个总结的更多相关文章
- Windos环境用Nginx配置反向代理和负载均衡
Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...
- nginx简单反向代理和负载均衡(ubuntu)
nginx简单反向代理与负载均衡 环境:三台ubuntu 12.04.5 虚拟机 均装有nginx 1.1.19 以下u1(192.168.240.129) ,u2(192.168.240.13 ...
- nginx的反向代理和负载均衡的区别是什么 - 开源中国社区
nginx的反向代理和负载均衡的区别是什么 - 开源中国社区 nginx的反向代理和负载均衡的区别是什么 #user nobody;worker_processes 1;#error_log ...
- nginx(三)反向代理和负载均衡
nginx(三)反向代理和负载均衡 正向代理概念:比如在学校要上网,在学校内网是一个内网ip,需要连上公网就需要一个正向代理服务器. 反向代理概念: 看下图(Nginx只做请求的转发,后台有多个htt ...
- 七、CentOS 6.5 下 Nginx的反向代理和负载均衡的实现
CentOS 6.5 下 Nginx的反向代理和负载均衡的实现 * 修复上面文章的问题: 复制出一个tomcat2之后,修改service.xml文件时,要修改三个端口: 1. <!-- 800 ...
- nginx实现反向代理和负载均衡
利用nginx做反向代理和负载均衡是减轻服务器压力的有效方式.nginx代理服务器接收多个客户端请求, 根据配置的参数均衡到每个tomcat服务器上,tomcat处理请求,返回响应结果给nginx,n ...
- Nginx使用反向代理实现负载均衡
Nginx使用反向代理实现负载均衡 yls 2019-9-20 简介 基于docker容器以及docker-compose,所以需要自学docker在linux环境的基本使用 使用两个tomcat作为 ...
- nginx 配置反向代理,负载均衡实战解析
前言:NGINX的反向代理和负载均衡是网站架构中经常用到的一种高并发,高可用的方案,下面我们直接实战操作,当然理论也是要的. 一.反向代理 过程:反向代理:客户端 一>代理 <一> ...
- [笔记]nginx配置反向代理和负载均衡
1.nginx配置文件:源码安装情况下,nginx.conf在解压后的安装包内.yum安装,一般情况下,一部分在/etc/nginx/nginx.conf中,一部分在/etc/nginx/conf.d ...
随机推荐
- 自定义 Activity 的 标题栏 TitleBar
自定义 Activity 的 标题栏 TitleBar 1. 修改标题栏的高度,背景 编辑styles.xml,添加: <?xmlversion="1.0" encoding ...
- Oracle表空间(tablespaces)
http://www.cnblogs.com/fnng/archive/2012/08/12/2634485.html 我们知道oarcle数据库真正存放数据的是数据文件(data files),Oa ...
- [SPI]SPI协议详解
转自:https://my.oschina.net/freeblues/blog/67400 1.SPI协议简介 1.1.SPI协议概括 SPI,是英语Serial Peripheral interf ...
- <<Exceptional C++>> notes
- class Complex { public: ) : real_(real), imaginary_(imaginary) { } Complex& operaor+=(const Co ...
- mysql:查询结果添加序列号
select (@i:=@i+1) as i,table_name.* from table_name,(select @i:=0) as it
- Visual Studio远程调试
Visual Studio支持调试远程机器上的程序,经过简单设置后,就像调试本地代码一样方便. 第一步:将vs工具里的Remote Debugger文件夹拷贝到目标机器.大致的目录应该是:D:\Pro ...
- js声明json数据,打印json数据,遍历json数据
1.js声明json数据: 2.打印json数据: 3.遍历json数据 //声明JSON var json = {}; json.a = 1; //第一种赋值方式(仿对象型) json['b'] = ...
- Android jar包的导出和使用
一.工程打成JAR包. 1. eclipse下有一工程JsnTxJar,右键工程名选择Export. 选择Java->JAR file 下图所示左边一栏只勾选src,右边一栏都不用勾 ...
- Unity5中的MetaPass
前些天烘焙lightmap的时候发现用自己写的Shader的模型在烘焙时候不会烘焙效果不对,它不会产生对周围物体的间接光照,但是我放到了unity4.x中就是没问题的.查了一番,发现Unity5中加了 ...
- 通过Spark SQL关联查询两个HDFS上的文件操作
order_created.txt 订单编号 订单创建时间 -- :: -- :: -- :: -- :: -- :: order_picked.txt 订单编号 订单提取时间 -- :: ...