这是一个“阻塞端口80”的相关问题,但也许有点独特。我还没有找到一个好的答案。它比任何学术都更具学术性,因为我知道在你家里运行一个生产服务器是一个荒谬的想法。
我正在家中运行开发服务器(LAMP)但我的ISP阻止端口80.我的域的DNS设置为“URL重定向”到我的IP和端口号。我的路由器是端口转发到我的服务器,我设置了Apache,所以它正在侦听8081端口。
问题是,当您访问域时,浏览器中的URL将从我的域名解析为IP和端口号,并显示为这样。 例如,您在浏览器中输入“www.banana.com”,会显示该网站,但现在该网址显示为“12.23.456.11:8081”。
有没有办法解决这个问题,以致域名不会成为IP和端口号?
你能以某种方式使用Apache代理功能吗?
您可以使用mod_rewrite将IP和端口号更改回域名吗?
提前致谢!
答案 0 :(得分:1)
这个问题有三个部分。首先是域名问题:为了替换域名代替IP地址,您需要一些可以将您想要的名称映射到地址的名称服务器。这是在主机级别而不是端口级别,因此域名将包含您可能从其托管的所有端口。如果您正在使用家庭Internet连接(我怀疑您是在谈论被阻止的端口),那么您需要考虑到您的公共IP地址可能会不时发生变化。您可以选择从ISP支付(或请求)静态IP,或使用动态DNS服务,可以在IP地址更改时快速更新其记录。
关于您的端口号。 Mod_rewrite只处理URL的路径部分,以便在内部使用您想要mod_proxy的不同端口。带有mod_proxy的Apache Web服务器将配置为侦听您想要的公共端口(我假设是端口80),然后mod_proxy将接收传入请求并将它们发送到另一个端口(甚至不同服务器)上的另一个Web服务器。对于外部用户,这种情况无形地发生。问题是,如果您的ISP不会让您在端口80上托管您的站点,那么它在逻辑上将不允许您从端口80代理。要解决这个问题会有点困难。我个人会看看Rackspace或Linode等人的虚拟化服务器。您可以在开放的Internet上获得(相对较少的钱)完全可配置的服务器,不受端口使用和静态IP的限制。更好的是,如果你搞砸了什么,你可以虚拟地删除你的服务器并重新开始使用新的操作系统映像。
最后是问题标题建议的干净网址。这可能不是你实际问题的一部分,但为了以防万一,mod_rewrite是一个智能模块,可以让你映射像/cars/Toyota/1997
这样的干净网址,并将它们变成更加丑陋的请求,如/cars.php?make=Toyota&year=1997
。干净的URL不仅看起来更好,而且随着网站的发展,可以更轻松地在幕后重新组织Web代码。
最后一件事,令我惊讶的是,这个问题已经过了很长时间,甚至没有对此发表评论,但这个问题实际上并不适合StackOverflow。可能是ServerFault.com。祝好运! :)