是否可以为 <host:port> 使用 CNAME(别名)
Posted
技术标签:
【中文标题】是否可以为 <host:port> 使用 CNAME(别名)【英文标题】:is it possible to use CNAME (alias) for <host:port> 【发布时间】: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? 【参考方案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 反向代理服务器来将请求转发到网络服务器(例如 HAProxy、nginx 等),但是这样您将丢失原始客户端的 IP 地址(当然您可以在 HTTP 标头中转发它,但您必须修改以前域上的代码才能处理此问题)。
【讨论】:
【参考方案4】:尝试使用 SRV 记录来执行此操作。这是我用来为我的 Minecraft 服务器获取自定义域的方法。
【讨论】:
你能详细说明吗?以上是关于是否可以为 <host:port> 使用 CNAME(别名)的主要内容,如果未能解决你的问题,请参考以下文章