【问题标题】:vue / nodejs & nginx in docker: connect() failed (111: Connection refused) while connecting to upstreamdocker中的vue / nodejs和nginx:connect()在连接到上游时失败(111:连接被拒绝)
【发布时间】:2020-11-19 15:22:01
【问题描述】:

目录结构:

myapp
-- frontend
---- docker
------ frontend
-------- nginx
-------- nginx.conf
docker-compose.yml

docker-compose.yml: https://pastebin.com/THxMf0xM (移至 pastebin 以避免烦人的“主要是代码”错误)

default.conf:

server {
    listen 80;
    server_name localhost;
    root /var/www/html;

    location / {
        proxy_pass http://vue:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

为什么我会得到connect() failed (111: Connection refused) while connecting to upstream

【问题讨论】:

  • 当你的服务没有在容器内运行时会出现这个错误,检查服务日志,在这种情况下是 nginx
  • vue服务运行良好。我可以在浏览器中访问 vue 服务。但是,当我在浏览器中访问 nginx 服务时,会出现错误
  • 好的,要检查的另一件事可能是端口映射是否到位是 vue 在 8081 上运行,您是否以 http 访问浏览器,即在端口 80 上?
  • 正如我所说,vue 应用在 localhost:8081 上运行良好。但在这种情况下,nginx 不知何故无法将 vue 应用程序提供给基于 DOCKER_FRONTEND_PORT 变量的给定端口。我给了变量 3300
  • 查看您的代码,我可以看到您正在将 8081 映射到 8080,那不应该是 80,因为 nginx 正在侦听端口 80 吗?

标签: docker nginx docker-compose devops


【解决方案1】:

https://pastebin.com/THxMf0xM 第 23 行,应该指向端口 80 即ports: - '8081:80'

【讨论】:

  • 您能否详细说明为什么我应该将其映射到 80 而不是 8080? vue cli 默认在 8080 上为他们的应用提供服务
  • 匹配前端与后端的映射,您在下面的答案中做了其他方式
【解决方案2】:

已通过将 proxy_pass http://vue:8081; 更改为 proxy_pass http://vue:8080; 修复

注意 8080 端口。

其次,重建前端服务

最后,从 vue 服务中删除 ports 选项

谢谢大家

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 2015-04-03
    • 2020-07-29
    • 2014-02-26
    • 2012-11-21
    • 2019-03-25
    • 2016-11-20
    相关资源
    最近更新 更多