【问题标题】:Hosting site using xampp server from local network without port-forwarding使用本地网络的 xampp 服务器托管站点,无需端口转发
【发布时间】:2013-08-22 18:07:23
【问题描述】:

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

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

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

【问题讨论】:

  • 您好,您能澄清一下您的问题吗?
  • 感谢您的回复,您希望我澄清什么?我认为图像会有所帮助..
  • 您需要为此在路由器中设置端口转发。如果你不能做到这一点,我认为没有办法做到这一点。无论哪种方式,您确定不能简单地在某处租用小型网络托管包吗?这要容易得多,如果您希望该网站 24/7 全天候可用,考虑到能源成本,它甚至可能更便宜....
  • @Pekka 感谢您的建议。实际上,我有一些必须托管的私人数据,而我的公司现阶段无法信任。
  • 我会选择一家值得信赖的大型托管公司并完成它。自托管解决方案可能会给您带来更多安全风险。无论哪种方式,您都必须能够为路由器配置端口转发。如果你做不到,那就没有办法了。

标签: apache http networking xampp


【解决方案1】:

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

一种方法,我会这样做:

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

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

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

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

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

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

缺点:

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

  • 中断可能发生多次。

  • 高带宽浪费

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

优点:

  • 间接托管方法

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

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

【讨论】:

  • 感谢您的回复,您的理论很好,但实际上很难做到。还有其他方法吗?
  • 如果是这样的话,我会给你赏金,并要求你再次提出这个问题作为赏金。谢谢
  • 你是想骗我吗?我对此非常不满。
【解决方案2】:

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

  1. 使用 Amazon 的 free tier 创建基于 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"

    b.使用网络服务器和反向代理:

    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 port 填充为42500,将Desination 填充为127.0.0.1:80 并勾选Remote 选项。 (您可能还需要在 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 上运行的输出。

【讨论】:

  • @andrew.. 嘿,我很想知道进程名称。我无法从第 4 步中理解。是否可以提供一些图片或更多解释。一旦你的步骤被证明是有效的,我会给你 50 分作为赏金(重新开始):)
  • @rickj 我已经更新了我的答案以帮助 Windows 用户建立 SSH 连接。
  • 如果我错了,请纠正我。首先,我应该从服务器获取 ssh,然后将其用于身份验证。接下来是您更新的答案(适用于 Windows)。腻子必须安装在本地主机上..对吗?然后从服务器获取密钥。您能否也解释一下带宽使用情况。我的意思是服务器会充当网络客户端的代理。请分享更多内容。感谢您节省宝贵的时间。。
  • SSH 是用于远程服务器访问的标准 *nix 协议,您可能会将其视为 Windows RDP。与 Windows RDP 让您将打印机转发到远程设备的方式类似,SSH 将让您转发端口。 SSH 服务器在远程(代理)机器上运行,您将通过 PuTTY 从 localhost 进行连接。亚马逊有一个很好的教程详细说明了这一点:docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html - RE:带宽使用,你的理解是正确的,流量是:Client <> Proxy <> localhost
  • 感谢您的提示。实际上我是其他一些托管服务提供商。有了你给的小费,我将不得不选择亚马逊。你有其他解决方案吗,我想我的托管服务提供商支持 SSH 控制台但不支持 ec2。
【解决方案3】:

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

【讨论】:

  • 感谢您的回复。但我想以某种方式做到这一点。
  • @rickj 好吧,这是不可能的。
  • @rickj 是的。您需要一个公共 IP(您的 Wi-Fi 路由器可能有),并且路由器需要能够将端口 80 转发到您的服务器。没有别的办法
  • @Pekka 你确定。即使是数据传输也没有机会。或诸如冲洗页面并重新请求服务器(即我的服务器)之类的东西。因为当种子种子和上传等是可能的,那为什么不呢!
  • @rickj Torrent 的工作方式不同:它们主动发起双方的连接。这称为“打孔”。 Here 是一个(非常复杂的)说明它是如何完成的。从理论上讲,您可以构建一些可以从您的私人位置获取数据的东西,但您还必须拥有真正的主机,而且构建它所需的工作量将是巨大的。
【解决方案4】:

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

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

【讨论】:

  • 感谢您的建议。实际上我有一些必须托管的私人数据,我的公司在这个阶段不能信任,而且我有一个域名
  • 您可以在托管服务器上使用 htdocs 保护数据:colostate.edu/~ric/htpass.html
  • @^^^^ 好吧,这很酷,但我害怕丢失/复制我的脚本。
  • 如果你真的需要,你可以通过公共 IP 地址;有关详细信息,请联系您的网络托管服务商。
【解决方案5】:

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

如果我错了,请纠正我。

谢谢。

【讨论】:

  • 其实我没有个人vpn网络。我试过公共VPN,但没有成功:(。除此之外我不希望我的用户连接到任何其他网络,它应该能够像手机一样打开任何地方。如果有任何其他技术,请立即告诉我。感谢您的关注。
【解决方案6】:

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

【讨论】:

  • 感谢您的回复,伙计,我想这是可能的,这就是我开始赏金的原因:)
【解决方案7】:

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

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

我会在你的场景中做的是:

  1. 我不会使用 XAMP,而是安装 WAMP,因为我更熟悉它并且易于配置。(完全个人喜好)
  2. 然后我将我的服务器设置为“在线”。(Google 如何在线设置 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. 等几分钟,瞧!您的网站已上线。

【讨论】:

  • 这不是主题,WAMP 和 XAMP 都做同样的事情。我无法访问路由器,我之前已经明确提到过。除此之外,中间还有很多服务器,无法配置。所以你的理论对我来说是无效的:(
猜你喜欢
  • 1970-01-01
  • 2019-04-22
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 2017-06-27
  • 1970-01-01
  • 2020-01-27
相关资源
最近更新 更多