我想用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
我知道当我们有多个服务器时,负载平衡是适用的。但有没有办法在具有多个端口的单个服务器上测试负载平衡?
将您的配置更改为:
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;