11

我想让我的网站在全球范围内可用。我使用 xampp 服务器进行托管。我无法访问任何类型的服务器和调制解调器。情况如下图:

我的站点服务器具有由 wifi 路由器分配的本地 IP,它运行 Windows 8。

请记住,我无法访问任何类型的服务器和调制解调器,因此端口转发是不可能的(超出我的范围)。

4

7 回答 7

3

它实际上很难,但并非不可能。

一种方法,我会解决这个问题:

  1. 我会在互联网上托管一个页面。

  2. 然后接受请求并将其存储在数据库中。

  3. 我的一个程序将始终在我的计算机上运行。

  4. 然后检查请求并将请求卷曲到本地主机。为此,您可以使用 Node.js(使用 GET 方法从数据库中获取数据并将其卷曲到 localhost)。

这是我能想到的最好的了。我正在努力,当代码准备好时,我会开源并通知你:)

但是,这仍然很困难,因为您需要将用户的请求休眠 2 秒,然后将其传输。它很慢,但可能对你有用。

缺点:

  • 程序会很慢,内存使用会更多。

  • 破坏可能会发生很多次。

  • 高带宽浪费

  • 如果不加密,MIM(中间人)可能是可能的。

优点:

  • 间接托管方法

  • 不必担心您的代码会丢失。

我期待一个更好的选择,我想再次保留这个问题。

于 2014-02-09T14:28:55.787 回答
2

如果您无法在 LAN 中打开必要的端口,您将需要访问外部服务器。但是,外部服务器不需要托管任何代码,例如

  1. 使用 Amazon 的免费套餐创建基于 Linux 的 ec2 实例。
  2. 安装一个包以将远程重定向到本地端口:

    一个。使用 socat:

    1. socat使用您的发行版包管理器安装

    2. 通过 SSH 连接:ssh -N -R 42500:127.0.0.1:80 -o ServerAliveInterval=60 ubuntu@xxx.xxx.xxx.xxx -N -R 8080:localhost:80 "socat TCP-LISTEN:8080,fork TCP:127.0.0.1:42500"

    湾。使用网络服务器和反向代理:

    1. 安装 apache 或 nginx 以及任何所需的反向代理模块,并将您的 VirtualHost 配置为将请求代理到本地端口,例如:8080->127.0.0.1:42500

    2. 通过 SSH 连接:ssh -N -R 42500:127.0.0.1:80 -o ServerAliveInterval=60 ubuntu@xxx.xxx.xxx.xxx

  3. 您的机器现在可以通过 ec2 实例访问http://xxx.xxx.xxx.xxx:8080/

在调试 Web 服务回调时,我偶尔会使用这种技术。


2014 年 2 月 17 日更新

如果您是 Windows 用户,则需要安装第三方工具来支持ssh. 选项包括:

如果您不熟悉 *nix 工具,PuTTY 是最简单的选择。要在 PuTTY 中配置远程端口转发,请展开以下设置:Connection -> SSH -> Tunnels. 鉴于前面描述的场景,填充Source port42500, Desinationas127.0.0.1:80并勾选Remote选项。(您可能还需要在选项卡中添加与 PuTTY 兼容的私钥的路径,Connection -> SSH -> Auth具体取决于您的服务器配置。

PuTTY 远程端口转发

要测试您是否已成功转发端口,请netstat -lnt在您的服务器上执行该命令。您将看到类似于以下内容的输出:

tcp     0    0    127.0.0.1:42500    0.0.0.0:*    LISTEN

最后,您可以使用curl http://127.0.0.1:42500. 您将看到您自己的机器 web 根在端口 80 上运行的输出。

于 2014-02-15T21:19:36.540 回答
1

贵公司有VPN网络吗?如果是这样并且您可以访问 vpn 网络,您可以将您的服务器包含在 vpn 网络中,您的访客只需登录到您公司的 vpn 网络,然后像在本地网络中一样访问您的站点,而无需使用端口转发。而且由于您的数据非常机密,我认为使用 vpn 也将有助于提高数据的安全性。

如果我错了,请纠正我。

谢谢你。

于 2014-02-05T04:21:22.440 回答
1

让我们把它分成几个步骤。

  1. 要在本地托管您的站点,您将需要一个静态 IP,以便用户可以专门访问它。
  2. 您将需要一个域,以便将其转换为用户友好的名称。
  3. 必须有 24x7 的互联网连接!您在图表中添加了一个 Wifi 路由器,并且今天的大多数路由器都能够进行端口转发。

我将在您的场景中做的是:

  1. 我将安装 WAMP 而不是使用 XAMP,因为我更熟悉它并且易于配置。(完全个人喜好)
  2. 然后我将我的服务器设置为“在线”。(谷歌如何在线设置 WAMP 服务器)
  3. 将端口“80”从路由器设置转发到我的本地计算机 IP 地址。(通常它被标记为“虚拟服务器”、“防火墙”、“端口转发”等在设置中因路由器而异)

    假设您有一个本地 IP“192.168.1.3”和全局/路由器 IP“254.232.123.232”,那么您会将向路由器发送的所有 HTTP 请求重定向到您的本地 IP。

    [[[[254.232.123.232]]]] --+ :80 +-- --------->192.168.1.3

  4. 现在这很好,但是你需要解决路由器的动态 IP 问题。但是不用担心,这要感谢一些简单的免费网站!

  5. 转到 no-ip.org -> 设置帐户 -> 并创建一个条目,现在只是一个子域,以测试一切是否正常。(像 mysite.no-ip.org 这样的子域,稍后购买一个真正的域)
  6. 在此处输入您的 IP 地址(路由器 IP)并下载其应用程序,如果您的本地 IP 更改,该应用程序将自动更新其服务器。
  7. 等待几分钟,瞧!您的网站已上线。
于 2014-02-08T16:21:16.170 回答
1

正如人们所说,您需要一个公共 IP 地址。但是,即使您这样做了,也不应该将 xampp 用作公共服务器,因为它是为开发而设计的,因此禁用了一些安全设置。

我建议购买一些共享虚拟主机,并将其上传到该主机。(如果您搜索“共享网络托管”,您可以获得便宜的托管服务,并且可以使用免费的 .tk 域名:http: //www.dot.tk/

于 2013-08-22T09:55:37.427 回答
1

如果没有端口转发,您的要求是不可能的。

于 2014-02-09T00:10:10.277 回答
1

如果您没有公共 IP 地址并且无法使用端口转发,则无法托管该站点

于 2013-08-20T17:30:32.360 回答