【问题标题】:How to create a local server without using ngrok?如何在不使用 ngrok 的情况下创建本地服务器?
【发布时间】:2025-08-18 01:50:02
【问题描述】:

我一直使用 NGRok 作为我的聊天机器人的服务器。所以我想创建一个本地服务器,使用我的静态 IP 和主机上的聊天机器人。有人知道怎么做吗?

【问题讨论】:

    标签: node.js chatbot ngrok localserver


    【解决方案1】:

    这取决于您的聊天机器人的具体情况。我假设它的行为类似于 HTTP 服务器。

    您必须确保符合以下标准:

    • 确保您的服务器也在侦听您的外部接口,而不仅仅是本地接口。例如,在 Linux 上,您可以使用 netstat -atulpen 进行检查。如果您的进程以状态LISTEN:::<PORT>0.0.0.0:<PORT> 的本地地址列出,那么它会侦听所有接口。如果本地地址是你的外部ip地址,也可以!如果您在此处看到其他内容,请检查您的代码是否将端口分配给您的服务器。这里通常还可以设置要监听的主机,可以设置为一个未指定的地址(::0.0.0.0)来监听所有接口。
    • 确保如果您使用防火墙,它不会阻止外部访问您的服务器。这取决于您的设置,我也建议您查看防火墙软件的手册以了解如何执行此操作。在 Linux 上,您通常将 ufw 作为 iptables 的前端或直接使用后者。
    • 确保您的静态 IP 可公开访问(如果您想从公共 Internet 访问您的服务器)。许多 ISP 不为客户提供公共 IPv4 地址,而是使用 NAT 为您提供对 IPv4 互联网的访问。要验证这一点,您可以使用诸如ifconfig.co 之类的站点来查看您的公共 IP 地址,如果这与您的静态 IP 地址匹配,它应该可以工作。如果 IP 不匹配,您的家庭网络中可能只有一个静态 IP,但没有一个公开路由到/来自 Internet 的 IP。如果ifconfig.co 显示的地址与您的路由器的 IP 匹配,您可以在路由器中启用端口转发到运行您服务器的主机。不过,这在很大程度上取决于您的网络是如何设置的。

    如果所有这些都适用,您应该能够使用您的公共 ip 和指定端口访问服务器。但是您可能需要考虑使用 HTTPS 而不是纯 HTTP 来保护连接。根据您设置的具体情况,您应该能够在网上找到许多关于如何完成此操作的指南。只是一些提示:

    • 您需要主机的 TLS 密钥和证书。您必须为自己生成的密钥和证书可以是自签名的,也可以由 CA 颁发,例如 Lets-encrypt。
    • 然后您必须修改您的应用程序以使用 HTTPs 而不是 HTTP,或者将您的应用程序更改为仅侦听本地连接并将其放置在为您执行 SSL 终止的反向代理之后。对于这个 nginx 和 apache 都是有效的选项,在 Internet 上有各种关于如何设置它们的资源。

    【讨论】: