【问题标题】:is it possible to use CNAME (alias) for <host:port>是否可以为 <host:port> 使用 CNAME(别名)
【发布时间】:2011-08-02 01:25:17
【问题描述】:

有没有办法可以隐藏 url 中的端口并使用 cname(别名)而不是 :.

例如如果我的网址是http://myserver.com:40089/webapps/index.jsp 我可以使用它吗 http://mycname/webapps/index.jsp

我要说的原因是,我可以在名为 myserver.com 的框周围移动以说 myserver1.com。我不希望客户在我搬家时总是更改此网址。相反,我的客户应该不知道服务在哪里运行以及在哪个端口上运行。

有可能吗?我正在使用码头作为我的网络服务器。

提前致谢。

【问题讨论】:

  • 我认为你不能设置端口。标准 80 端口有什么问题?
  • 我投票结束这个问题,因为它不是一个编程问题,而且它在 Stack Overflow 上是题外话。应在Webmasters 上询问有关您网站的非编程问题。请查看那里提出的类似问题:Can DNS point to specific port?

标签: jsp servlets webserver jetty


【解决方案1】:

是和否...是的,您可以交替使用 cname(但请记住,cookie 可能不会随其使用,具体取决于它们的域),但如果您的服务器在 80 以外的端口上运行,您'必须在 URL 中包含端口号。

【讨论】:

  • 我该怎么做?我没有使用 cookie。它只是用来暴露网络服务和显示简单的网页。
  • 您所要做的就是确保您的应用程序输出(并由您共享)的链接指向 mycname。如果你想更流畅,你可以使用 apache 和 mod_rewrite 来重定向所有发往 myserver.com -> mycname 的流量。
【解决方案2】:

没有。 CNAME 仅映射名称,而不映射端口。如果要将 x:b 映射到 c:d,则需要反向代理。

【讨论】:

    【解决方案3】:

    使用 DNS CNAME,您只能从一个主机名指向另一个主机名。端口号完全不同。

    所描述的情况有几个问题:

    • 如果您在 DNS 中设置 CNAME,您可能还必须修改您的网络服务器以处理新的主机名,因为 HTTP 协议的工作原理是这样的
    • 正如 @stevevis 所说,您会丢失 cookie 和缓存,甚至是搜索引擎中的排名
    • 您仍然必须在地址中包含端口号:http://mycname:40080/webapps/index.jsp

    你没有提到,但我假设你不能修改你的网络服务器设置,因为在这种情况下你也可以修改端口号。

    但是有一个解决这个问题的方法,只需付出很小的牺牲。

    您可以安装一个 HTTP 反向代理服务器来将请求转发到网络服务器(例如 HAProxynginx 等),但是这样您将丢失原始客户端的 IP 地址(当然您可以在 HTTP 标头中转发它,但您必须修改以前域上的代码才能处理此问题)。

    【讨论】:

      【解决方案4】:

      尝试使用 SRV 记录来执行此操作。这是我用来为我的 Minecraft 服务器获取自定义域的方法。

      【讨论】:

      • 你能详细说明吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      相关资源
      最近更新 更多