nginx学习之反向代理负载均衡

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx学习之反向代理负载均衡相关的知识,希望对你有一定的参考价值。

    nginx是一款很强大的http和反向代理服务器。它的功能非常强大。

    并不是一开始就需要负载均衡集群,当网络流量不断增长,单个处理单元无法满足负载请求时,网络应用流量将要出现瓶颈时,负载均衡才会起到作用。

  负载均衡与反向代理区别:负载均衡是反向代理的其中一个功能。反向代理服务器还可以缓存静态资源。当用户有请求时,直接返回反向代理服务器上的资源给用户,如果反向代理服务器上没有资源就转发给后端负载均衡服务器。


反向代理一般配置:

http {
upstream fight {
        192.168.3.10:80 weight=1 max_fails=2 fail_timeout=10s;
        192.168.3.11:80 weight=1 max_fails=2 fail_timeout=10s;
##fight代表负载均衡事物名称,weight代表权值,max_fail代表请求失败次数,fail_timeout代表在经历max_fail错误请求后,超时时间后暂停服务。
        }
        
server {
        listen 80;
        server_name 192.168.3.9;
        root /var/www/html;
        location / {
        proxy_pass http://fight;
        proxy_set_header           Host $host; 
        proxy_set_header           X-Real-IP $remote_addr; 
        proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for; 
        #host代表主机名,以上设置可以显示真实访问ip,以下是各种参数,可有可无
        client_max_body_size       10m; #允许客户端请求的最大单文件字节数
        client_body_buffer_size    128k; #缓冲区代理缓冲用户端请求的最大字节数
        proxy_connect_timeout      300; #nginx跟后端服务器连接超时时间(代理连接超时)
        proxy_send_timeout         300; #后端服务器数据回传时间(代理发送超时)
        proxy_read_timeout         300; #连接成功后,后端服务器响应时间(代理接收超时)
        proxy_buffer_size          4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
        proxy_buffers              4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
            }
      }
}

nginx还支持多组的负载均衡,可以配置多个upstream,来服务于不同的server。

nginx的upstream目前支持多种方式的分配,以下是常用几种。

<1>轮询(默认)

每个请求按照时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能够自动剔除。

<2>weight

指定轮询几率,wight和访问比率成正比,用于后端服务器性能不均的情况下。

<3>ip_hash

每个请求按照访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。


    nginx反向代理不仅可以为后端多台服务器做负载均衡,还可为后端较慢的服务器提供缓存服务,还可启用高级url策略和管理技术,从而使处于不同web服务器系统的web界面同时处于同一url空间下。

以上是关于nginx学习之反向代理负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud学习之三负载均衡

从零开始学Nginx——反向代理+负载均衡

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

nginx反向代理访问很慢,我做了负载均衡,现在几乎无法访问,有谁能帮我解决一下,万分感谢。

nginx--❤️图解及代码实现正向代理反向代理及负载均衡(非常实用,建议收藏❤️)

nginx做反向代理负载均衡 Java怎么获取后端服务器获取用户IP