如何使我的 nodejs 服务器可以远程访问?

如何使我的 nodejs 服务器可以远程访问?

我的机器上运行着一个 nodejs 服务器。我设法通过 ngrok 隧道使其可以远程访问,但我想避免使用隧道。如果可能的话,我更喜欢使用其他方法。我认为你可以使用公共 IP 的方法!?
我已经为路由器配置了端口转发,远程发出的请求到达我的机器的端口 5001,该端口是监听 nodejs 服务器的端口。但服务器忽略了这些请求。为什么?还有其他原因吗?

服务器HTTPS.js

https.createServer({ key: fs.readFileSync('server.key'), cert: fs.readFileSync('server.cert') }, app)
    .listen(VAR.SERVER_PORT, () => {
        console.log(`server listening on ${VAR.SERVER_PORT}`);
    }
)

更新:
如果服务器以 HTTP 模式监听,我可以进行远程通信,但当我进入 HTTPS 模式时,我无法再进行远程通信。但是使用 wireshark,我可以看到发送到托管服务器的计算机的端口 5001 的数据包。如果请求发送到本地主机,服务器将与客户端通信。

更新2
我做了进一步的测试,我相信这是一个自签名证书接受的问题,结果如下:

1)从应用程序到智能手机上的其余部分,HTTP 和 HTTPS 都可以远程工作,但为了获得 HTTPS 的答案,我必须在同一个 Android 应用程序上启用“SSL 检查”;

2)只有在我接受自签名不安全证书后,PC 和智能手机浏览器才能够与服务器通信并以 HTTPS 形式从 API 获取数据。(例如,我在地址栏中输入:'https://myip:5001/getCars')

3)只有在我执行完第 2 步(接受不安全的证书)后,stackblitz 上 angular 应用程序的预览才能够与服务器通信并访问 API

4)托管服务器的同一台机器上的 angular 应用程序只有在执行第 2 点(接受证书,但这次是 localhost 的证书)后才能与 nodejs 服务器通信 所有这些测试都是在 Firefox 中进行的

此时我的问题发生了变化,我如何让角度应用程序接受证书,因为当我运行应用程序时没有要求接受自签名证书,谢谢大家

相关内容