0

假设我想打开两个端口,一个在 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.1localhost因此不将请求转发到正确的 pod...

4

1 回答 1

0

您应该没有理由无法通过localhost127.0.0.1从同一 pod 的任何容器中的任何进程连接到端口 9999。

您是否尝试过使用oc rsh来访问正在运行的容器并消失了:

curl localhost:9999

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

于 2018-04-17T08:29:02.193 回答