502 错误网关 Elixir/Phoenix

502 Bad Gateway Elixir/Phoenix

我已经设置了一个新的 Ubuntu 18.04 服务器并部署了我的 phoenix 应用程序,但是在尝试访问它时出现 502 错误。

我还没有域名,因为我要从另一台服务器转移一个,所以只是尝试连接 IP 地址。

Phoenix 应用程序已部署 运行,我可以使用 edeliver ping 通它。

产品会议:

config :app, AppWeb.Endpoint,
  load_from_system_env: false,
  url: [host: "127.0.0.1", port: 4013],
  cache_static_manifest: "priv/static/cache_manifest.json",
  check_origin: true,
  root: ".",
  version: Mix.Project.config[:version]

config :logger, level: :info

config :phoenix, :serve_endpoints, true

import_config "prod.secret.exs"

Nginx 配置文件:

server {
  listen 80;
  server_name _;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:4013;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}

Nginx 错误日志:

2020/05/14 22:28:23 [error] 22908#22908: *24 connect() failed (111: Connection refused) while connecting to upstream, client: ipaddress, server: _, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:4013/", host: "ipaddress"

编辑:

确认应用程序存在的 OTP 日志的最后两个条目

===== ALIVE Fri May 15 07:33:19 UTC 2020

===== ALIVE Fri May 15 07:48:19 UTC 2020

编辑 2:

我已经发布了一个要点,详细说明了我从一个干净的 Ubuntu 盒子到我现在所处位置所采取的所有步骤:https://gist.github.com/phollyer/cb3428e6c23b11fadc5105cea1379a7c 谢谢

您必须将 server: true 添加到您的配置中,例如:

config :wtmitu, WtmituWeb.Endpoint,
  server: true,  # <-- this line
  load_from_system_env: false,
  ...

您不必将它添加到 dev 环境中,因为 mix phx.server 已经为您完成了。

Doc

已解决如下:

有两个问题需要解决。

  1. 需要将 config :app, AppWeb.Endpoint, server: true 添加到 prod.secret.exsprod.exs
  2. 我有一个 运行 过程遗留下来,最初是因为错误地将 staging 部署到同一台服务器。我本来是登录服务器的,然后用./bin/app stop停止了staging,可能这就留下了一个进程运行,也可能是后来我莫名其妙的启动了这个进程。反正我用ps ux列出了运行个进程,发现其中一个进程在它的路径中列出了staging,所以我杀掉了all运行 与部署相关的流程,包括暂存和生产,以及 kill -9 processId,重新部署到生产,现在一切正常。