nginx负载均衡实现

反向代理

代理这个词应该都有听过,要知道什么是反向代理,首先要知道什么是正向代理。

正向代理:比如我要访问谷歌,但是在大陆是无法访问的,这时候,有一台服务器A在国外,这个服务器A是可以访问谷歌的。为了访问谷歌,服务器A作为代理,帮我们去访问谷歌,将内容返回给我们,这就是正向代理

反向代理:我想要访问某个资源,因此去访问服务器A,然后服务器A就将资源给我们了,但是实际上,服务器A从哪里来的这个资源?它也是从其他某个服务器获取来的,但是对于我来说,我根本不知道服务器A去哪里帮我获取的这个资源,在我看来,这个资源就是服务器A本来就有的。这就是反向代理

反向代理与正向代理的区别:

  1. 正向代理,我们确切知道我们访问的是谁,借助于代理服务器去访问它
  2. 反向代理,我们只知道我们访问的是这个服务器,其实这个服务器还偷偷从其他服务器获取资源,但是我们完全不知道。

为了更好的理解这两种代理,用一个实际例子来说明:

正向代理:我知道有一个人叫小A,他手上有一些小电影资源,我想要,但是我不认识小A。正好隔壁老王认识小A,于是我找到老王,说,老王啊,帮我牵牵头,我想找小A买个小电影。于是老王就把小A带过来了,我就买到小电影了。这里的老王就是正向代理

反向代理:我想买一些小电影,于是找到了隔壁老王,说,老王啊,给我一点小电影。老王答应道:明天给你送过来。第二天,老王果然给我送来了小电影。其实,老王也是从别人那里拿的小电影,再转手给我。我还以为是老王自己的小电影给我了。这时候的老王就是反向代理。

负载均衡实现

原理:

这里写图片描述

实现:

在nginx安装目录下的etc下,创建一个配置文件

vim load_balance.conf

内容如下:

user nobody;
worker_processes 4;
events{
        worker_connections 1024;
}
http{
     upstream myapp1 {        
        server 14.152.71.1;
        server 180.97.161.112;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp1;
        }
    }
}

解析:

这里写图片描述

启动nginx的时候,通过-c参数来启用我们刚刚创建的配置文件,那么负载均衡就搞定了。

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/load_balance.conf 

友情提示:我在做实验的时候,将服务器列表配置为百度,淘宝等ip,结果访问不了,最后用了一个我自己的阿里云服务器,可以正常访问。可能是那些网站做了一些安全措施吧。

原文地址:https://www.cnblogs.com/flytogalaxy/p/7736142.html