Nginx 反向代理做意想不到的负载均衡

Nginx reverse proxy does unexpected load balancing

// 发布问题后编辑
我的问题是所有 docker 都在同一个网络中,因为我也想 docker 使用代理并且他需要访问所有 docker 来代理请求。
它与 PROXY
无关 所以我不知道为什么,但事实是它们在同一个 docker 网络中,即使在使用暴露的端口时它也在我所有的 apps

中进行负载平衡

我正在尝试为我的团队设置用于本地开发的反向代理。 我们在 docker 中有 3 个 Laravel Apps 运行 映射到主机

上的不同端口

docker ps 结果 :

a1741218e399 nginx "/docker-entrypoint.…"   5 seconds ago        Up 3 seconds        0.0.0.0:8087->80/tcp   qbo
175b5133fd82 nginx "/docker-entrypoint.…"   8 seconds ago        Up 7 seconds        0.0.0.0:8086->80/tcp   apiv2
56c485f51700 nginx "/docker-entrypoint.…"   41 seconds ago       Up 39 seconds       0.0.0.0:8085->80/tcp   apiv1

所有主机都在 /etc/hosts

中引用
127.0.0.1 api.lan
127.0.0.1 api2.lan
127.0.0.1 qbo.lan

Nginx 安装在我的机器上,配置如下

# Api v1
upstream api.lan {

  server localhost:8085;
}

server {

  server_name api.lan;
  listen 80;

  location / {

    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;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://api.lan;
    proxy_redirect off;
  }
}


# Qbo
upstream qbo.lan {

  server localhost:8087;
}

server {

  server_name qbo.lan;
  listen 80;

  location / {

    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;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://qbo.lan;
    proxy_redirect off;
  }
}

# Api v2
upstream api2.lan {

  server localhost:8086;
}

server {

  server_name api2.lan;
  listen 80;

  location / {

    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;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://api2.lan;
    proxy_redirect off;
  }
}

这是我的问题,当访问 3 个域中的任何一个时,它是这 3 个 apps 之间的负载平衡。

最奇怪的是,除了那些 apps,我还在不同的端口上得到了我的前端 apps v1 和 v2 运行,代理配置相似,没有任何负载平衡问题。 如果有人有建议帮我解决这个问题

问题是我的码头工人在同一网络中。 即使我公开了不同的端口,它们之间也会进行负载平衡。 与代理无关。