【问题标题】:NGINX and SPRINGBOOT in DOCKER container GOT 502 Bad GatewayDOCKER 容器中的 NGINX 和 SPRING BOOT GET 502 Bad Gateway
【发布时间】:2022-02-21 16:53:25
【问题描述】:

我将 springboot 项目部署在 docker 容器中打开端口 8080 以及 nginx 服务器打开端口 80 enter image description here

当我使用 卷曲 http://localhost:8080/heya/index 正常返回

但是当我使用 curl http://localhost/heya/index 希望我可以从 nginx 代理访问,它失败了。我检查了日志,它说

*24#24: 11 connect() 在连接到上游时失败(111:连接被拒绝),客户端:172.17.0.1,服务器:,请求:“GET /heya/index HTTP/1.1 ", 上游: "http://127.0.0.1:8080/heya/index", 主机: "localhost"

这是我的 nginx.conf

enter image description here

我想不通,需要帮助。

【问题讨论】:

  • 将配置和输出添加为文本而不是图像链接
  • 以后,请将所有相关代码和错误以文字形式发布,而不是图片。

标签: docker nginx


【解决方案1】:

我终于得到答案了!!

我使用主机网络模式运行了 nginx 容器和 webapp 容器,并且成功了。

【讨论】:

    【解决方案2】:

    111:连接被拒绝)同时连接到上游

    是说 Nginx 无法连接到上游服务器。

    你的

    proxy_pass http://heya;
    

    告诉 Nginx 上游正在使用主机名 heya 上的 HTTP 协议 [在默认端口 80 上]。除非您在同一个 Compose 网络中运行多个容器,否则主机名不太可能是 heya

    如果 Java 应用程序在同一个容器内的 8080 端口上运行,使用 HTTP 协议,正确的 proxy_pass 应该是

    proxy_pass http://localhost:8080;
    

    (因为容器视图中的localhost是容器本身)。

    【讨论】:

    • 我刚才试了一下,还是不行,还返回502 Bad Gateway。实际上,我将上游 {} 放在那里的目的是为将来的服务器保留一个位置。既然我在那里定义了名字,也许我可以在后面使用它......但我不确定它是否正确
    • 哦,我找到了原因。我刚刚尝试在 nginx 容器中 ping localhost:8080/heya/index,它只是拒绝了我,但是我怎样才能将它们放在同一个网络中?
    猜你喜欢
    • 2020-04-05
    • 2020-08-01
    • 2018-09-12
    • 1970-01-01
    • 2015-06-29
    • 2017-04-18
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多