如何在 Openshift 3 Online 中打开内部端口?
How to open an internal port in Openshift 3 Online?
假设我想打开两个端口,一个用于 8080 的 public,另一个用于处理一些 public 请求但被 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 上正确侦听?
假设我想打开两个端口,一个用于 8080 的 public,另一个用于处理一些 public 请求但被 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 上正确侦听?