Nginx反向代理与负载均衡

反向代理( reverse proxy) 方式是指用代理服务器来接受Internet上的连接请求, 然后将请求转发给内部网络中的上游服务器, 并将从上游服务器上得到的结果返回给Internet上请求
连接的客户端, 此时代理服务器对外的表现就是一个Web服务器。 充当反向代理服务器也是Nginx的一种常见用法( 反向代理服务器必须能够处理大量并发请求) , 本节将介绍Nginx作
为HTTP反向代理服务器的基本用法。由于Nginx具有“强悍”的高并发高负载能力, 因此一般会作为前端的服务器直接向客户端提供静态文件服务。 但也有一些复杂、
多变的业务不适合放到Nginx服务器上, 这时会用Apache、 Tomcat等服务器来处理。 于是, Nginx通常会被配置为既是静态Web服务器也是反向代理服务器
不适合Nginx处理的请求就会直接转发到上游服务器中处理。

客户端发来HTTP请求时, Nginx并不会立刻转发到上游服务器, 而是先把用户的请求( 包括HTTP包体) 完整地接收到Nginx所在服务器的硬盘或者内存中, 然后再向上游服务器
发起连接, 把缓存的客户端请求转发到上游服务器。Nginx的这种工作方式有什么优缺点呢? 很明显, 缺点是延长了一个请求的处理时间,并增加了用于缓存请求内容的内存和磁盘空间。
而优点则是降低了上游服务器的负载, 尽量把压力放在Nginx服务器上。

负载均衡配置

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
} 
server {
    location / {
    proxy_pass http://backend;
    }
}

server配置项指定了一台上游服务器的名字, 这个名字可以是域名、 IP地址端口、 UNIX句柄等, 在其后还可以跟下列参数。
·weight=number: 设置向这台上游服务器转发的权重, 默认为1。
·max_fails=number: 该选项与fail_timeout配合使用, 指在fail_timeout时间段内, 如果向当前的上游服务器转发失败次数超过number, 则认为在当前的fail_timeout时间段内这台上游
服务器不可用。 max_fails默认为1, 如果设置为0, 则表示不检查失败次数。
·fail_timeout=time: fail_timeout表示该时间段内转发失败多少次后就认为上游服务器暂时不可用, 用于优化反向代理功能。 它与向上游服务器建立连接的超时时间、 读取上游服务
器的响应超时时间等完全无关。 fail_timeout默认为10秒。
·down: 表示所在的上游服务器永久下线, 只在使用ip_hash配置项时才有用。
·backup: 在使用ip_hash配置项时它是无效的。 它表示所在的上游服务器只是备份服务器, 只有在所有的非备份上游服务器都失效后, 才会向所在的上游服务器转发请求。

扩展资料:http://www.linuxidc.com/Linux/2016-04/130350.htm

原文地址:https://www.cnblogs.com/qilong853/p/6482997.html