0

我正在使用 GeddyJs 和 heroku cedar 应用程序部署。我正在为数据库使用 Heroku Postgres 服务。

我已经在 geddyjs 的配置文件中配置了用户名/密码/主机名/数据库名,但是当我运行node app.js它时会抛出一个错误,因为pg_hba.conf我不知道这与远程访问数据库时未使用 SSL 有关,但我不知道如何在连接上强制 SSL..

这是错误日志:

error: no pg_hba.conf entry for host "70.199.196.17", user "12345", database "database1", SSL off
    at p.parseE (/Users/mikedevita/Web/Sites/gorelative.com/node/node_modules/pg/lib/connection.js:503:11)
    at p.parseMessage (/Users/mikedevita/Web/Sites/gorelative.com/node/node_modules/pg/lib/connection.js:363:17)
    at Socket.p.attachListeners (/Users/mikedevita/Web/Sites/gorelative.com/node/node_modules/pg/lib/connection.js:86:20)
    at Socket.EventEmitter.emit (events.js:96:17)
    at TCP.onread (net.js:397:14)
[Tue, 05 Mar 2013 22:39:49 GMT] ERROR Worker 843 died.

我的 config/development.js 文件:

var config = {
  detailedErrors: true
, debug: true
, hostname: 'localhost'
, port: 3000
, model: {
    defaultAdapter: 'postgres'
  }
, db: {
    postgres: {
        port: 5432
      , password: 'foobar' 
      , database: 'database1'
      , host: 'ec2-107-21-126-45.compute-1.amazonaws.com'
      , user: '12345'
    }
  }
, sessions: {
    store: 'memory'
  , key: 'sid'
  , expiry: 14 * 24 * 60 * 60
  }
};

module.exports = config;
4

2 回答 2

2

您需要添加ssl: true到您的 postgres 配置中。

postgres: {
    port: 5432
  , password: 'foobar' 
  , database: 'database1'
  , host: 'ec2-107-21-126-45.compute-1.amazonaws.com'
  , user: '12345'
  , ssl: true
}

Geddy 只是将这个配置对象传递给 pg 模块。查看pg.client wiki 页面了解更多信息。

于 2013-03-06T02:03:27.270 回答
-1

如果您尝试从 Heroku 外部连接,则需要使用 SSL 连接。如果使用 SSL 加密,我们只允许来自 Heroku 外部的连接

error: no pg_hba.conf entry for host "70.199.196.17", user "12345", database "database1", SSL off说您无法连接 SSL 关闭。

此外,您可能正在使用 database1 清理您的数据库名称,但如果不是,我可以向您保证,您的数据库名称实际上不是 database1。

此外,您不应该将您的凭据硬编码在文件中。从你的环境中读出它们。

于 2013-03-05T23:39:29.120 回答