提问者:小点点

使用nginx和IIS在单台服务器上测试负载平衡


我想用nginx和IIS在单个服务器上测试负载平衡。我将nginx设置为侦听localhost:90,并将IIS上的两个网站设置为侦听本地主机:81和本地主机:82

这是我的< code>nginx.conf:

events {
worker_connections  1024;
}

http {
  upstream backend {
    server localhost:81;
    server localhost:82;
  }

  server {
    listen 90;
    server_name backend;
    location / {
      proxy_pass http://localhost:80;
    }
  }
}

当我打开http://localhost:90在浏览器上,它返回504网关超时。

事实上,请求将发送到端口80(我在< code>proxy_pass中设置的),而不是端口81和82

我知道当我们有多个服务器时,负载平衡是适用的。但有没有办法在具有多个端口的单个服务器上测试负载平衡?


共1个答案

匿名用户

将您的配置更改为:

events {
worker_connections  1024;
}

http {
  upstream backend {
    server localhost:81;
    server localhost:82;
  }

  server {
    listen 90;
    server_name _;
    location / {
      proxy_pass http://backend;
    }
  }
}

现在在端口 90 上打开本地主机

解释:

要使用 http 块中指定的上游,您需要使用其名称。

proxy_pass http://backend;

在执行反向代理时,设置以下标头也是一个很好的做法(因此后端获取客户端信息而不是反向代理服务器):

proxy_set_header   X-Real-IP        $remote_addr;
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
proxy_set_header   X-Forwarded-User  $remote_user;