【问题标题】:Docker compose network confused the nodesDocker compose network 混淆了节点
【发布时间】:2017-12-03 14:50:15
【问题描述】:

有时 nginx 服务器将请求转发到错误的 docker-compose 服务。

我有 docker-compose 配置

version: "3.0"
services:
  proj-reader:
    image: repositry:5000/my-company.com/proj-reader
    ports:
      - "28090:8080"
      - "28095:5005"
  proj-helpdesk:
    image: repository:5000/my-company.com/proj-helpdesk
    ports:
      - "29080:8080"
      - "29085:5005"
  proj-frontend:
    image: repository:5000/my-company.com/proj-frontend
    ports:
      - "80:80"
    links:
      - "proj-helpdesk:backend"
      - "proj-reader:reader"
...

前端是一个带有 NodeJs 应用程序的 nginx 容器。我们有下一个 nginx 配置:

upstream backend {
    server backend:8080;
    keepalive 30;
}

upstream reader {
    server reader:8080;
    keepalive 30;
}

server {
    listen     80;
    client_max_body_size 2m;
    server_name  localhost;
    root   /usr/share/nginx/html;

    location /api/ {
        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_pass          http://backend;
        proxy_read_timeout   600;
    }

    location /web-callback/ {
        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_pass          http://reader;
    }

}

有时我可以看到在其他服务中收到了对 /web-callback/ 的请求,而该请求未指向前端服务的链接部分。第一次我认为它是在我重新启动阅读器服务后发生的。但是昨天这种情况再次发生,我知道阅读器还没有重新启动。 它是什么?以及如何防止这种情况发生?

【问题讨论】:

标签: docker nginx docker-compose docker-networking


【解决方案1】:

你应该尝试使用:

location ^~ /api/ {
  # Queries beginning with /api/ and then stops searching.
}

location ^~ /web-callback/ {
  # Queries beginning with /web-callback/ and then stops searching.
}

https://www.keycdn.com/support/nginx-location-directive/

【讨论】:

  • 不是 nginx 的问题。因为它正确地转发请求。这是 docker 网络问题。
  • 好的。您可以尝试检查您在 nginx 容器中的 /etc/hosts 中有哪些值,并将其与后端和读取器容器的 ip 地址进行比较。
猜你喜欢
  • 2014-01-06
  • 2020-05-16
  • 2017-03-06
  • 2021-08-11
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多