在开发环境中使用Heroku PG在GeddyJs上获取SSL错误

时间:2013-03-05 23:28:12

标签: node.js postgresql heroku geddy

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

我已经在geddyjs的配置文件中配置了用户名/密码/主机名/ dbname,但是当我去运行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;

2 个答案:

答案 0 :(得分: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 page了解详情。

答案 1 :(得分:-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。

此外,您应 NOT NOT NOT 在文件中对您的凭据进行硬编码。从您的环境中读取它们。