【问题标题】:Connecting NodeJS app with OracleDB using SecureGateway使用 SecureGateway 将 NodeJS 应用程序与 OracleDB 连接
【发布时间】:2017-07-11 16:33:21
【问题描述】:

我正在尝试使用 SecureGateway 将我的 NodeJS 应用程序连接到 Oracle 数据库,但不起作用。

我执行了测试,当我运行时

var exec = require('child_process').exec;
var sys = require('sys');
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("ping 192.168.10.8", puts);

为了测试我的连接,我没有结果。所以我认为我的应用程序和网关之间没有创建连接。

当我在DataConnect中运行时,工作正常。

我使用require('bluemix-secure-gateway') 从我的服务器获取信息。

用于创建隧道的函数是

const tls = require('tls');
const net = require('net');

var creations = 0;  // a running count of the number of open connections, when it becomes 0, the tunnel is closed.
var server;  // a server listening for certificate requests from the gateway server 

exports.create = function(port, options, callback) {
    if(creations == 0) {

        creations++;

        //server not currently running, create one
        server = net.createServer(function (conn) {
            connectFarside(conn, options, function(err, socket) {
                socket.pipe(conn);
                conn.pipe(socket);
            });
        });

        server.listen(port, function(){
            callback();
        });

    } else{
        //server already running
        creations++;
        callback()
    }
};

function connectFarside(conn, options, callback) {
    try {
        var socket = tls.connect(options, function() {
            callback(null, socket);
        });

        socket.on('error', function(err){
            console.log('Socket error: ' + JSON.stringify(err));
        });

    } catch(err) {
        callback(err);
    }
};

exports.close = function(){

    creations--;
    if(creations == 0){
        // close the server if this was 
        // the only connections running on it
        server.close();
    }
}

我的结果是我的本地网络。

【问题讨论】:

  • 您是否尝试使用 Node 应用程序调用 Secure Gateway 以访问您的 OracleDB?或者您是否尝试让 Secure Gateway 与您的 Node 应用建立连接,然后连接到 OracleDB 本身?
  • 我尝试调用 Secure Gateway 以访问 OracleDB。但我不是从甲骨文到本地网络。
  • Ricardo,建立TLS连接后,你是如何与数据库通信的?

标签: node.js ibm-cloud tls1.2 secure-gateway


【解决方案1】:

要让您的应用程序访问 Secure Gateway,它只需要使用您的目标提供的云主机:端口。要接受连接,您需要在可以访问您的数据库的位置运行 Secure Gateway 客户端。

例如,如果我想连接到本地计算机上运行的 Mongo 数据库,我可以创建一个目标,并将资源主机名设置为 localhost,并将资源端口设置为 27017。创建此目的地后,将为其分配一个云主机:端口(例如,cap-sg-prd-3.integration.ibmcloud.com:23432)。

如果我的应用程序通常使用 mongodb://localhost:27017/myproject 之类的连接字符串连接到 Mongo,我会将其更改为 mongodb://cap-sg-prd-3.integration.ibmcloud.com:23432/myproject,以便通过安全网关路由连接。

【讨论】:

  • 谢谢@galen-keene!就是这样。事实上,我阅读了一些教程,但没有一个清楚地向我解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多