是否可以对<host:port> </host:port>使用CNAME(别名)

时间:2011-04-09 11:16:58

标签: jsp servlets webserver jetty

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

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

我告诉的原因是,我可以在名为myserver.com的名为myserver.com的盒子周围移动。我不希望客户端在我移动时总是更改此URL。相反,我的客户应该不知道服务的运行位置和端口。

有可能吗?我使用jetty作为我的网络服务器。

提前致谢。

4 个答案:

答案 0 :(得分:9)

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

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

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

您尚未提及但我认为您无法修改您的网络服务器设置,因为在这种情况下您也可以修改端口号。

但是这个问题有一个小问题的解决方案。

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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

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

,则需要反向代理

答案 3 :(得分:0)

是和否......是的,你可以互换地使用cname(但请记住,根据他们的域名,cookie可能不适合骑行),但是如果你的服务器在80以外的端口上运行,那么你将必须在URL中包含端口号。