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

Aja*_*jay 15 webserver jsp servlets jetty

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

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

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

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

提前致谢.

KAR*_*ván 9

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

描述的情况有几个问题:

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

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

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

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


小智 5

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

  • 你能详细说明一下吗? (2认同)

ste*_*vls 0

是和否...是的,您可以互换使用 cname(尽管请记住,cookie 可能不会随行,具体取决于它们的域),但如果您的服务器在 80 以外的端口上运行,您将拥有在 URL 中包含端口号。