2013-05-13 71 views
1

这是一个“阻塞端口80”相关的问题,但也许有点独特。我还没有找到一个好的答案。它比任何东西都更有学术价值,因为我知道在你家里运行生产服务器是一个荒谬的想法。非端口80的Web服务器和漂亮的URL的

我在家中运行开发服务器(LAMP),但我的ISP阻止端口80.我的域的DNS设置为“URL重定向”到我的IP和端口号。我的路由器是端口转发到我的服务器,我有Apache设置,因此它正在侦听端口8081.

问题是,当您访问域时,浏览器中的URL从我的域名解析到IP和端口号,并显示如此。 例如,您在浏览器中键入“www.banana.com”,显示该网站,但现在该URL显示为“12.23.456.11:8081”。

有没有办法解决这个问题,使域名不会成为IP和端口号?

您能否以某种方式使用Apache代理功能?

您可以使用mod_rewrite将IP和端口号更改回域名吗?

在此先感谢!

回答

1

这个问题有三个部分。首先是域问题:为了用域名代替IP地址,你需要一些名称服务器,它可以将你想要的名字映射到一个地址。这是在主机级别而不是端口级别,因此域名将包含您可能托管的所有端口。如果您正在使用家庭互联网连接(我怀疑自从您谈论阻止的端口以来,那么您需要考虑到您的公共IP地址会不时发生变化)。您的选择是从您的ISP支付(或请求)一个静态IP或使用动态DNS服务,该服务可以在您的IP地址更改时快速更新其记录。

至于你的端口号。 Mod_rewite只处理一个URL的路径部分,在内部使用不同的端口,你想要mod_proxy。使用mod_proxy的Apache网络服务器将被配置为侦听您想要的公共端口(我假设它是端口80),然后mod_proxy将接收传入请求并将它们发送到另一个端口(甚至不同服务器)上的另一个Web服务器。对外部用户而言,这是无形的。问题是,如果你的ISP不让你在80端口上托管你的站点,那么它在逻辑上不会让你从80端口进行代理。为了解决这个问题会更困难。就我个人而言,我会看看Rackspace或Linode等人的虚拟化服务器。在开放的互联网上,您可以获得(相对较少的资金)一个完全可配置的服务器,不受端口使用和静态IP的限制。更糟糕的是,如果你把东西搞砸了,你可以实际上删除你的服务器并重新开始一个新的操作系统镜像。

最后,您的问题标题建议的干净网址。这可能不是你实际问题的一部分,但为防万一,mod_rewrite是一个智能模块,它可以让你映射干净的URL,如/cars/Toyota/1997,并将它们变成更难看的请求,如/cars.php?make=Toyota&year=1997。随着网站的发展,干净的URL不仅看起来更好,还可以更轻松地重新组织Web代码。

最后一件事,对我来说这个问题已经持续了很长时间,甚至没有对此评论,但是,这个问题实际上并不适合StackOverflow。可能ServerFault.com。祝你好运! :)