# nginx 502错误

**URL:** https://meta.discourse.org/t/502-error-on-nginx/160592
**Category:** Self-hosting
**Created:** [2020年八月12日 06:05 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592 "2020-08-12T06:05:04Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![elopio](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/elopio/32/218413_2.png) [@elopio](https://meta.discourse.org/u/elopio)
#### Post date: [2020年八月12日 06:05 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/1 "2020-08-12T06:05:05Z")

</div>

你好，

我刚运行了 `./launcher rebuild app`，表面上没有报错。但当我尝试打开网站时，却收到了 502 错误。

Nginx 错误日志（`shared/standalone/log/var-log/nginx/error.log`）显示：

```plaintext
2020/08/12 05:47:43 [error] 653#653: *7 connect() failed (111: Connection refused) while connecting to upstream, client: [...], server: _, request: "GET / HTTP/2.0", upstream: "http://127.0.0.1:3000/", host: "[...]"

```

我已经查阅了所有关于 Discourse 和 Nginx 502 错误的相关帖子，但未能找到或理解任何与我的情况相符的内容。

这可能相关，这是在容器内运行的结果：

```plaintext
# netstat -plant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name    
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN -                   
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 644/nginx: master p 
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN -                   
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 644/nginx: master p 
tcp6 0 0 :::6379 :::* LISTEN -                   
tcp6 0 0 :::5432 :::* LISTEN -

```

是否应该有某个服务在 3000 端口运行？

能否请您指导我，应该从哪里入手查找更多信息以调试此问题？

pura vida 🙂

---

<div class="post-metadata">

### Author: ![itsbhanusharma](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/itsbhanusharma/32/180717_2.png) [@itsbhanusharma](https://meta.discourse.org/u/itsbhanusharma)
#### Post date: [2020年八月12日 06:55 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/2 "2020-08-12T06:55:30Z")

</div>

最初会显示 502 错误，因为容器内的服务正在启动。该错误应在 30 秒内消失。如果未消失，可能是您的服务器 CPU 负载过高，导致响应变慢。

---

<div class="post-metadata">

### Author: ![elopio](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/elopio/32/218413_2.png) [@elopio](https://meta.discourse.org/u/elopio)
#### Post date: [2020年八月12日 12:38 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/3 "2020-08-12T12:38:39Z")

</div>

谢谢 @itsbhanusharma。

我运行了 `./launcher restart app` 并用 top 监控了负载，目前远低于 10%。

我认为 CPU 应该足以应对负载：

```plaintext
$ cat /proc/cpuinfo | grep 'name' | uniq
model name : Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz
$ cat /proc/cpuinfo | grep process | wc -l
4

```

有没有更好的方法来调试容器的启动过程？  
还有其他建议吗？

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [2020年八月12日 12:59 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/4 "2020-08-12T12:59:28Z")

</div>

安装了哪些插件？这台服务器使用的是 SSD 吗？

---

<div class="post-metadata">

### Author: ![elopio](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/elopio/32/218413_2.png) [@elopio](https://meta.discourse.org/u/elopio)
#### Post date: [2020年八月12日 14:51 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/5 "2020-08-12T14:51:14Z")

</div>

我刚克隆了仓库并运行了设置命令，所以我想它只包含默认插件？我不确定在哪里查看，但我肯定没有添加任何插件。

服务器不是 SSD。

---

<div class="post-metadata">

### Author: ![neounix](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neounix/32/215617_2.png) [@neounix](https://meta.discourse.org/u/neounix)
#### Post date: [2020年八月12日 16:46 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/6 "2020-08-12T16:46:27Z")

</div>

嗨 @elopio

你能否发布你的‘yml’文件，但请去掉任何敏感信息？

---

<div class="post-metadata">

### Author: ![elopio](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/elopio/32/218413_2.png) [@elopio](https://meta.discourse.org/u/elopio)
#### Post date: [2020年八月12日 21:24 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/7 "2020-08-12T21:24:49Z")

</div>

好的，它在这里：

> **[Ubuntu Pastebin](https://paste.ubuntu.com/p/k7yR42q2vF/)**

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [2020年八月12日 22:32 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/8 "2020-08-12T22:32:47Z")

</div>

> [@elopio](#):
>
> 服务器不是 SSD。

Discourse 需要 SSD，普通的机械硬盘无法提供足够的 IOPS。

> [@Which server to choose regarding Discourse requirements?](https://meta.discourse.org/t/which-server-to-choose-regarding-discourse-requirements/86646/2):
>
> You definitely want SSD, the last one seems fine, just check and see if it is a fairly modern CPU.

---

<div class="post-metadata">

### Author: ![elopio](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/elopio/32/218413_2.png) [@elopio](https://meta.discourse.org/u/elopio)
#### Post date: [2020年八月12日 23:50 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/9 "2020-08-12T23:50:40Z")

</div>

这就是导致 502 错误的原因吗？还是说即使没有 SSD，网站也能正常运行，只是速度非常慢？

---

<div class="post-metadata">

### Author: ![neounix](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neounix/32/215617_2.png) [@neounix](https://meta.discourse.org/u/neounix)
#### Post date: [2020年八月13日 01:42 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/10 "2020-08-13T01:42:24Z")

</div>

使用传统机械硬盘与 SSD 硬盘不应导致 502 错误。这不太可能，正如你的问题所示 @elopio。

这里有一篇可能有帮助的简短说明：

> **[How to Solve 502 Bad Gateway Issues? - KeyCDN Support](https://www.keycdn.com/support/502-bad-gateway)**
>
> Having issues with a 502 Bad Gateway error? This guide gives you practical tips to solve origin not reachable problems.

在我看来，最好的做法是打开几个终端，对 Rails 和 nginx 的日志文件（包括错误日志和访问日志）运行 `tail -f`，然后尝试访问，确保在看到 502 错误时，你的注意力集中在日志文件的末尾。

你知道这些日志文件存放在哪里，以及如何在终端中对它们运行 `tail -f` 命令吗？

* * *

注意，你之前问过：

> [@elopio](#):
>
> 3000 端口是否应该有服务在运行？

Rails 在 Docker 容器内的 3000 端口运行，且该端口未向容器外部暴露。这就是为什么你在容器外部运行 netstat 时看不到 3000 端口的原因。

希望这能帮到你。

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [2020年八月13日 01:56 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/11 "2020-08-13T01:56:49Z")

</div>

> [@neounix](#):
>
> 使用传统机械硬盘与 SSD 硬盘不应导致 502 错误。

根据经验，缓慢的 I/O 绝对会导致超时和 502 错误。

SSD 级别的 IOPS 是硬性要求。

---

<div class="post-metadata">

### Author: ![elopio](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/elopio/32/218413_2.png) [@elopio](https://meta.discourse.org/u/elopio)
#### Post date: [2020年八月13日 02:54 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/12 "2020-08-13T02:54:17Z")

</div>

哇，查看 Rails 日志时，我发现 Unicorn 日志非常大，抱怨了一些权限错误。我执行了 `rm -rf tmp/cache/bootsnap-compile-cache/` 删除了该目录，现在我看到祝贺屏幕了！！！

谢谢大家。在决定将其重新部署到 SSD 服务器之前，我会再稍微玩一下这个环境。

---

<div class="post-metadata">

### Author: ![neounix](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neounix/32/215617_2.png) [@neounix](https://meta.discourse.org/u/neounix)
#### Post date: [2020年八月13日 06:49 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/13 "2020-08-13T06:49:36Z")

</div>

> [@elopio](#):
>
> 谢谢各位朋友。在决定将其重新部署到 SSD 服务器之前，我会再试用一下。

不客气，@elopio

很高兴你从日志中找到了问题并成功解决。做得好。

祝你后续一切顺利！

---

<div class="post-metadata">

### Author: ![elopio](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/elopio/32/218413_2.png) [@elopio](https://meta.discourse.org/u/elopio)
#### Post date: [2020年八月13日 13:56 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/14 "2020-08-13T13:56:17Z")

</div>

好的，这运行得非常出色。我想展示一下我们正在做的事情：

[https://bunqueer.jaquerespeis.org/](https://bunqueer.jaquerespeis.org/)

这是哥斯达黎加黑客空间从 Telegram 迁移到 Discourse 的项目 🙂 我们还有很多事情要做，但这次我确信我们一定能彻底告别聊天室。非常感谢 Discourse 团队！

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [2020年九月12日 14:04 UTC](https://meta.discourse.org/t/502-error-on-nginx/160592/15 "2020-09-12T14:04:48Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
