1

这是一个与“Blocked Port 80”相关的问题,但可能有点独特。我还没有找到一个好的答案。它比任何东西都更具学术性,因为我知道在你家运行生产服务器是一个荒谬的想法。

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

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

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

你能以某种方式使用 Apache 代理功能吗?

你能用mod_rewrite把IP和端口号改回域名吗?

提前致谢!

4

1 回答 1

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 没有限制。

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

最后一件事,令我惊讶的是,这个问题已经持续了这么长时间,甚至没有对此发表评论,但是,这个问题真的不适合 StackOverflow。可能是 ServerFault.com。祝你好运!:)

于 2013-05-13T04:56:53.017 回答