【问题标题】:Why does my Heroku app work only for me and no one else?为什么我的 Heroku 应用程序只对我有效,对其他人无效?
【发布时间】:2014-04-29 23:54:02
【问题描述】:

几天前,我在一个免费帐户上部署了一个 heroku 应用程序,网址如下: http://www.thebusybee.io/api/v1/tasks

在那天,我编辑了 DNS 记录以指向 http://busybeeapp.herokuapp.com (screenshot link) -- 并将新域添加到我的 heroku 设置中。

在我的 heroku 帐户上总共部署了 4 个应用程序,但 busybee.io 是唯一一个具有自定义域的应用程序,这是我第一次这样做。

目前,路由仅设置为接受 GET 和 POST 请求,它会在浏览器和终端中为我执行成功的请求。但几乎所有尝试访问该 url 的人都说它不起作用。

成功的响应应返回如下所示的 JSON 数据数组:

[
  {
    id: 1,
    description: "first task",
    created_at: "2014-04-25T02:27:11.005Z",
    updated_at: "2014-04-25T02:27:11.005Z"
  },
  {
    id: 2,
    description: "can you see me?",
    created_at: "2014-04-25T04:20:15.841Z",
    updated_at: "2014-04-25T04:20:15.841Z"
  }
]

我应该获得更多的测功机吗?这是否与请求数量有限有关?我不是 100% 清楚如何解决这个问题。

为了比较,这里有一个指向 herokuapp 子域中的应用程序的链接:http://busybeeapp.herokuapp.com/api/v1/tasks

这里是 github 仓库的链接:https://github.com/thisisbrianhan/busybee

这是我的终端输出:

$ curl -I http://www.thebusybee.io/api/v1/tasks

HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate
Content-length: 0
Content-Type: application/json; charset=utf-8
Date: Tue, 29 Apr 2014 23:43:09 GMT
Etag: "e11ceb6324cdea6fa03728839c7ceaa8"
Server: WEBrick/1.3.1 (Ruby/2.1.1/2014-02-24)
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Request-Id: d968dfad-a7c2-432d-b343-d1153bab17f4
X-Runtime: 0.008214
X-Xss-Protection: 1; mode=block
Connection: keep-alive


$ hosts www.thebusybee.io

www.thebusybee.io is an alias for busybeeapp.herokuapp.com.
busybeeapp.herokuapp.com is an alias for us-east-1-a.route.herokuapp.com.
us-east-1-a.route.herokuapp.com has address 23.21.41.227

如果我应该为您提供更多信息以更好地解决此问题,请告诉我。

感谢您的时间和帮助!

【问题讨论】:

  • 定义,“不起作用”。尽管我收到了 JSON 响应,但我可以访问该页面。这不是它应该做的吗?不要只是添加更多的测功机 - 如果您的应用程序没有使用一个,为什么要添加更多使其工作?你必须有充分的理由来添加东西,而不仅仅是在黑暗中拍摄。 :)
  • 它对我有用。在我对“作品”的理解中。
  • 谢谢,@jefflunt -- 是的,获得 JSON 响应是预期的成功响应(我已经更新了 OP 以明确这一点)。
  • 可能当您启用您的域时,它尚未传播到 DNS 服务器。
  • 似乎@akonsu 的建议很有可能。 DNS 可能需要几天时间才能在全球传播。如果您的下一个问题是“它如何使 DNS 传播更快”,那么该问题的答案是:“您没有。您只需等待。它应该以这种方式工作。” :)

标签: ruby-on-rails git heroku


【解决方案1】:

如果您已经等待并且@akonsu 的回答对您来说还不够,请记住,heroku 会定期关闭他们的单个 dyno 免费应用程序。当请求页面时,它需要一些时间才能重新启动并启动您的应用程序。您需要为始终开启的第二个测功机付费。也许您的其他用户只是在等待应用程序启动而超时。无论哪种方式,您都必须更好地定义“不起作用”。

免责声明:我已经有一段时间没有在 heroku 上托管了。

【讨论】:

  • 感谢您的回答——“不起作用”意味着其他用户在点击thebusybee.io/api/v1/tasks 时看不到应该出现的 JSON 数据,我不确定他们是否在计时出或收到其他类型的错误。用户在访问 heroku url 时没有问题,busybeeapp.herokuapp.com/api/v1/tasks 并且我知道单个测功机的性能应该很慢,但是如果 heroku 子域,我的网站仍然应该支持多个用户访问它地址一次适用于多个用户。
【解决方案2】:

这与我能找到的答案很接近,但现在http://www.busybee.io/api/v1/tasks 似乎成功且始终如一地响应 JSON 数据。

我摆弄着我的 heroku 域和我注册域名的 DNS 记录。 在我为这个应用程序设置了许多可能的域(通配符域、裸根域、api 子域)之前,我有许多指向这些域的 DNS 记录。

使用该配置,当用户导航到我提供的 url 路径时,会导致很多不一致的响应。

所以现在我的 DNS 记录被编辑为看起来像 OP 指示的 this。 heroku 主机和域设置现在也已正确配置。

这是一个小问题,但我非常感谢那些花时间研究这个问题并帮助我更好地理解 Heroku 部署过程的人。

干杯

【讨论】:

    猜你喜欢
    • 2019-10-09
    • 2016-06-22
    • 2018-05-19
    • 2022-11-13
    • 1970-01-01
    • 2021-09-24
    • 2023-03-09
    • 1970-01-01
    • 2015-09-12
    相关资源
    最近更新 更多