使用Node.js,Express(Generator)和Knex从业余爱好升级到标准后,如何将Heroku Server应用程序连接到Postgres数据库

时间:2019-05-09 05:25:05

标签: node.js ssl-certificate knex.js heroku-postgres

我将heroku postgres db从业余爱好(免费)升级到standard-0(收费),因为我接近业余爱好计划的行数限制,并且无法获得SSL签发或“粘贴”给我应用程序,使其可以正常工作。

我成功地遵循了Heroku文档中的pg:copy说明,但是这样做之后,该应用程序无法访问新数据库。我可以通过POSTICO访问它。

研究表明这是一个SSL问题,因此我升级到了爱好动态器(heroku ps:resize web = hobby),它应根据Heroku文档自动生成SSL证书并将其分配给我的应用域。

但是,当我这样做时,然后运行:

heroku certs

我得到:my-app-name没有SSL证书。 使用heroku证书:添加CRT密钥以添加一个

我跑步时:

heroku certs:auto

我得到:

启用自动证书管理...开始。使用heroku certs:auto查看状态,或者等待直到通过heroku certs:auto:wait激活 ===您的证书现在将由Heroku管理。通过运行

检查状态
heroku certs:auto

但是跑步

heroku certs

仍然给出:my-app-name没有SSL证书

运行

heroku certs:auto:wait

我得到了:什么都没有...只是在命令行上换了一行

运行

heroku certs:generate my-app-name.herokuapp.com

我得到:

您的密钥和证书签名请求已生成。 在“ my-app-name.herokuapp.com.csr”中将CSR提交给您首选的证书颁发机构。

我不知道这意味着什么,除了Heroku文档外,这还应该为我完成。

还:我确实将ssl:true键值对添加到了knexfile.js中的生产对象中

production: {
    client: 'pg',
    connection: process.env.DATABASE_URL,
    ssl: true
  },

1 个答案:

答案 0 :(得分:0)

我最终与Heroku开了一张帮助票。在确保正确执行了pg:copy的过程之后,由一位知识渊博的Heroku工程师Taylor Jones为我提供了解决该问题的建议。

  

尽管您的Knex实例似乎仍然没有强制SSL   指定这样做。尝试添加以下配置   您应用的变量:

heroku config:set PGSSLMODE=require
  

这应该为您的SSL添加更多的实施层   与您的Postgres实例的连接。让我知道这是否无效   要么。