我的 ISP 阻止了端口 80 的传入连接,但我想从家用计算机运行 Web 服务器。我还注册了一个域名。
托管我的网站的最简单/最佳方法是什么?
到目前为止,我唯一的想法是:支付一个托管帐户,在那里设置 apache,以便将请求从那里路由到我家的开放端口(例如 8080)上的连接
答案1
为什么要付费托管?难道你不能在某处获得一个免费托管帐户,将你的域名指向它,然后对所有流量使用简单的重定向吗?
我猜这是为你在家里建立的一个小网站准备的,因为它很方便。也许是一个开发环境或运行一些你想从任何地方访问的脚本。如果你真的想在家里运行一个生产环境,而你的提供商阻止了端口 80,那你就疯了。
一个问题是 - 您是否希望在浏览网站时显示域名?如果不想,只需从 domain.com 重定向到 IP.ADDR.AT.HOME 即可(请参阅以下链接了解各种重定向方式: http://www.yolinux.com/TUTORIALS/ApacheRedirect.html)
如果您希望显示您的域名,我可以采取以下措施:
我看到的最大问题是,因为您试图将所有内容从一台服务器重定向到另一台服务器,所以您必须将 POST 参数转换为 GET(因为发布到仅重定向的第三方服务器意味着您的帖子数据将丢失)。
如果您的托管服务提供商允许某些脚本语言,您可以使用 PHP 或 Perl 来重定向所有请求:
<?php
$args = $_GET;
$postArgs = $_POST;
$paramString = (empty($args) ? '' : '?');
if (empty($args)) $paramString = (empty($postArgs) ? '' : '?');
$first = true;
foreach ($args AS $key => $value) {
$paramString .= (!$first ? '&' : '') . $key . '=' . $value;
$first = false;
}
foreach ($postArgs AS $key => $value) {
$paramString .= (!$first ? '&' : '') . $key . '=' . $value;
$first = false;
}
$uri = $_SERVER['REQUEST_URI'];
header("Location: http://IP.ADDR.AT.HOME:8080$uri$paramString");
?>
这确实取决于你想做什么。
答案2
您的 ISP 允许您运行 Web 服务器,但同时又封锁 80 端口,这几乎是不可思议的。如果您的 ISP 不允许您运行 Web 服务器,那么您就无法运行。您正在尝试为非技术问题寻找技术解决方案。您无权运行 Web 服务器。