使用Nginx搭建负载均衡和反向代理

今天做了一个简单的实验,就是在自己的域名下挂上weibo.com服务。当然如果按照此方式,一般可以挂上各种其它网站的服务。最简单的方法就是使用Nginx建一个反向代理。然而如果流量太大,可能需要不同IP的反向代理服务器。随后在这些反向代理之前挂一个负载均衡服务器。大致结构如下:

nginx负载均衡和反向代理

Nginx反向代理设置

首先我们在反向代理服务器上配置Nginx的反向代理。配置如下:

    server {
        listen 8111;
        server_name _;
        location / {
            proxy_pass   https://weibo.com;
            proxy_hide_header X-Frame-Options;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
        }
    }

如果我们想要配置三个节点反向代理服务器,只需要准备三台服务器,开启Nginx并使用相同的配置文件即可。

Nginx负载均衡设置

接下来我们基于以上3台反向代理服务器,配置一台均衡负载服务器。配置如下:

    upstream weibo{
        server localhost:8081;
        server localhost:8082;
        server localhost:8083;
        hash $request_uri;
    }

    server {
        listen      8080;
        server_name  localhost;
        location / {
            proxy_pass   http://weibo;
            proxy_hide_header X-Frame-Options;
        }
    }

    server {
        listen      8081;
        server_name  localhost;
        location / {
            proxy_pass http://192.168.0.100:8111;
            proxy_hide_header X-Frame-Options;
        }
    }

    server {
        listen      8082;
        server_name  localhost;
        location / {
            proxy_pass http://192.168.0.101:8111;
            proxy_hide_header X-Frame-Options;
        }
    }

    server {
        listen      8083;
        server_name  localhost;
        location / {
            proxy_pass http://192.168.0.102:8111;
            proxy_hide_header X-Frame-Options;
        }
    }

此配置中有一个疑问,为什么要在创建三个local server并指向反向代理?为什么不能直接在upstream配置远程的反向代理主机地址?这个我也不是很清楚,但是在upstream中直接配置远程反向代理主机就是不工作。有了解的朋友可以留言相告。

Captain QR Code

扫码联系船长

发表回复

您的电子邮箱地址不会被公开。