如何在Openshift 3 Online中打开内部端口?

如何在Openshift 3 Online中打开内部端口?,openshift,openshift-3,openshift-online,Openshift,Openshift 3,Openshift Online,假设我想打开两个端口,一个用于8080的公共端口,另一个用于处理某些公共请求,但由8080端口转发,如下所示: const http = require('http'); const publicServer = http.createServer(...).listen(8080); const privateServer = http.createServer(...).listen(9999); publicServer.on('connect', (req, cltSocket, hea

假设我想打开两个端口,一个用于8080的公共端口,另一个用于处理某些公共请求,但由8080端口转发,如下所示:

const http = require('http');
const publicServer = http.createServer(...).listen(8080);
const privateServer = http.createServer(...).listen(9999);
publicServer.on('connect', (req, cltSocket, head) => {
  ...
  if (...) {
    // let srvSocket = net.connect('9999', 'localhost', () => {
    let srvSocket = net.connect('9999', '127.0.0.1', () => {
      cltSocket.write('\r\n\r\n');
      srvSocket.write(head);
      srvSocket.pipe(cltSocket);
      cltSocket.pipe(srvSocket);
    });
  }
});

我是否可以使用某些类型的设置来允许此操作?目前,Openshift似乎不允许此设置。它可能不遵守
127.0.0.1
localhost
,因此不将请求转发到正确的pod…

您没有理由不能从同一pod的任何容器中的任何进程通过
localhost
127.0.0.1
连接到端口9999

您是否尝试过使用
oc rsh
访问正在运行的容器,但没有:

curl localhost:9999

要验证您的代码是否确实在端口9999上正确侦听?

让我试试……问题可能出在服务器上('connect',cb)上吗?看起来openshift online没有正向连接到pod。这是很有可能的。如果我们不知道你要解决的问题,不如在你的问题中解释你想做什么,而不是问为什么解决方案不起作用。如果我们知道最初的需求,可能会有更好的方法来满足您的需求。请退一步。如果您只是尝试在同一容器中作为环回执行此操作,则OpenShift不应阻止
CONNECT
CONNECT
通过公开的路由工作可能会有问题,但这只是一个假设。这里的9999端口无论如何都不会暴露在OpenShift集群之外,如果您希望是这样的话。这就是为什么你真的需要解释你试图解决的原始问题。哦,我想使用一个不同的路由,当我发现请求是HTTP/2.0或HTTP/1.1时,我就单独编写了这个路由。