【问题标题】:nginx proxy_pass and docker errors when container not up容器未启动时的 nginx proxy_pass 和 docker 错误
【发布时间】:2020-01-28 21:12:07
【问题描述】:

我想达到什么目标:

我想启动一个 nginx 容器和一个 API 容器。将它们分组在同一个网络下,proxy_pass 从 nginx 到 API 容器(使用 nginx conf 文件中的 API 容器名称)。

到目前为止我做了什么:

创建了 2 个 docker-compose 文件(因为它们不相互依赖)。如果 API 容器在 nginx 之前启动,一切正常。在 API 容器未运行时启动 nginx 时出现错误。

我遇到的错误:

nginx    | 2019/09/29 07:28:19 [emerg] 1#1: host not found in upstream "api_server" in /etc/nginx/conf.d/default.conf:8
nginx    | nginx: [emerg] host not found in upstream "api_server" in /etc/nginx/conf.d/default.conf:8
nginx exited with code 1

另一个问题是当 API 容器由于某种原因崩溃并重新启动时,nginx 也需要重新启动才能恢复工作。

目前的解决方法:

在 nginx 之前启动 API 容器。

我的(部分)nginx conf 文件是:

location /api_server {
        proxy_pass http://api_server:2300;
    }

有什么想法吗?

【问题讨论】:

    标签: docker nginx proxypass


    【解决方案1】:

    我建议您查看jwilder/nginx-proxy,因为它涵盖了您想要实现的目标。他创建了一个应用程序来侦听容器生命周期操作并相应地更新/etc/nginx/conf.d/default.conf 文件。还要确保nginx-proxy 容器位于将被代理到的同一个 docker 网络容器上。

    【讨论】:

    • 容器肯定在同一个网络上。如果我以正确的顺序(API 和 nginx)启动它们,它们可以毫无问题地协同工作。我会尝试 jwilder 的解决方案
    • 它非常简单易用。他已经用更新配置文件的监听器解决了这个问题。
    猜你喜欢
    • 2015-05-03
    • 2017-01-22
    • 1970-01-01
    • 2023-02-26
    • 2018-07-08
    • 2015-03-17
    • 2022-01-22
    • 1970-01-01
    • 2017-01-07
    相关资源
    最近更新 更多