您好,欢迎来到有书房!

nginx反向代理和负载均衡

分类:知识大全作者:互联网王者 发布时间:2019-02-20 11:51:28阅读:2.2万+

引言:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx 最大的特点是占有内存少,并发能力强。官方数据测试表明能够支持50000个并发连接数,Nginx作为web服务器或者负载均衡中间件,都是最佳选择。

        

        Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx 最大的特点是占有内存少,并发能力强。官方数据测试表明能够支持50000个并发连接数,Nginx作为web服务器或者负载均衡中间件,都是最佳选择。


        这里先说一下什么是正向代理,举一个例子,我们要访问国外的网站,但是很多时候是不能直接访问的,我们需要用一个代理服务器就可以访问,通过代理服务器访问国外网站,再通过代理服务器返回数据,这就是正向代理。正向代理类似一个跳板服务器,代理本地客户端访问外部资源,代理的是本地客户端,代理程序通常安装在客户端本机上,对目标服务器是透明的。


        然后我们再说一下什么是反向代理,反向代理是一种将客户端请求分发到多个后端服务器的技术。与正向代理不同,反向代理是将客户端的请求转发到服务器端,然后将服务器端的响应返回给客户端。反向代理的用途大部分是为了分散压力,对于集群架构的服务器系统都需要反向代理去选择服务器提供服务。

反向代理对客户端是透明的,反向代理是一个位于一个或多个web服务器前面的服务器,拦截来自客户端的请求。反向代理代理的是服务端,对用户来说是无感知的。因此本地客户端不需要任何配置就可以访问。



Nginx的反向代理功能

配置举例如下:

server {

    listen       80;

    server_name  www.test.com


    location / {

        proxy_pass http://localhost:8080;

        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_set_header X-Forwarded-Proto $scheme;

    }

}

解释:Nginx配置为反向代理,发送到 http://www.test.com 的请求会被代理到localhost:8080。


Nginx的负载均衡功能


        大部分的反向代理都是为了分散压力而做的,也就是所谓的负载均衡,对集群的服务器做负载均衡,Nginx的负载均衡功能也是杠杠的。负载均衡将客户端请求按照合适的负载均衡算法分发到多个真实的服务器,分散访问压力,多个服务器共同提供服务。Nginx负载均衡是基于Nginx的upstream模块实现的。当Nginx收到客户端请求时,它会将请求转发到upstream模块中定义的真实服务器列表中的其中一个服务器。如果所选的服务器宕机或者异常,无法提供服务,那么nginx会将请求转发到另一个可用的服务器。


        Nginx提供的负载均衡策略主要有内置策略和扩展策略。内置策略有轮询、加权轮询、IP地址哈希。 IP地址哈希对客户端请求的ip进行hash操作,然后根据结果将同一个客户端ip的请求分发给同一台服务器进行处理,这样就可以解决用户session问题,防止用户的请求被分散到多个服务器中导致session丢失。

配置举例如下:

http {

    upstream real {

        server real1.test.com;

        server real2.test.com;

        server real3.test.com;

        server real4.test.com;

    }


    server {

        listen 80;

        server_name www.test.com


        location / {

            proxy_pass http://real;

            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_set_header X-Forwarded-Proto $scheme;

        }

    }

}

解释:Nginx定义了一个名为real的upstream负载均衡器,将请求分发到后面的四个真实服务器。Nginx默认使用轮询(round-robin)算法进行负载均衡。添加最少连接(least_conn)或IP地址哈希(ip_hash)指令来改变负载均衡算法。

比如:

upstream backend {

    least_conn;

     server real1.test.com;

        server real2.test.com;

        server real3.test.com;

        server real4.test.com;

}


upstream real {

    ip_hash;

     server real1.test.com;

        server real2.test.com;

        server real3.test.com;

        server real4.test.com;

}


声明:本文内容版权归原作者所有,未经授权,禁止转载!

声明:本站仅提供内容存储、展示服务,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的虚假信息,谨防诈骗。如发现有害或侵权内容,可联系本站删除!

发表评论

评论

联系
我们

平台负责人邮箱
282271588@qq.com

关注
公众号

关注官方公众号

下载
安卓版

下载安卓版

回到
顶部