【问题标题】:Nginx reverse proxy does unexpected load balancingNginx 反向代理做意外的负载均衡
【发布时间】:2020-07-16 22:30:49
【问题描述】:

// 发布问题后编辑
我的问题是所有码头工人都在同一个网络中,因为我也想码头化代理,他需要访问所有码头工人来代理请求。
它与代理无关
所以我不知道为什么,但事实上它们在同一个 docker 网络中,即使使用暴露的端口,它也会通过我所有的应用程序进行负载平衡

我正在尝试为我的团队设置本地开发的反向代理。 我们有 3 个 Laravel 应用程序在 docker 中运行良好,映射到主机上的不同端口

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 个应用程序之间进行负载平衡。

最奇怪的是,除了这些应用程序之外,我的 fronts 应用程序 v1 和 v2 在不同的端口上运行良好,代理配置类似,没有任何负载平衡问题。 如果有人有建议帮助我解决这个问题

【问题讨论】:

  • 你能说明你是如何提出请求的吗?你能显示 nginx 访问和错误日​​志吗?什么版本的 nginx?
  • 我正在通过我的网络浏览器请求/我返回了一个带有服务名称 (Apiv1/Apiv2/Qbo) 的字符串。我正在使用 nginx 1.18.0。对于日志,我需要一些时间来重新启动服务,因为我目前正在工作:)
  • @AndyShinn 我发现了我的问题,码头工人在同一个网络中。因此,即使它们暴露于不同的端口,它们也会相互负载平衡。它与代理无关。很抱歉浪费您的时间:)

标签: linux docker nginx load-balancing reverse-proxy


【解决方案1】:

问题是我在同一个网络中的码头工人。 即使我暴露了不同的端口,它也是这些端口之间的负载平衡。 它与代理无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 2016-11-08
    • 2020-10-06
    • 2013-05-01
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多