is it possible to use CNAME (alias) for <host:port>

Ajay picture Ajay · Apr 9, 2011 · Viewed 56.5k times · Source

Is there a way i can hide the port from url and use cname (alias) instead of :.

For e.g. If my url is http://myserver.com:40089/webapps/index.jsp Is its possible for me to use http://mycname/webapps/index.jsp

Reason i am telling is, i can move around the box called myserver.com to say myserver1.com. I dont want client to always change this url whenever i am moving. Instead my client should be unaware of where the service is running and on which port.

Is it possible? I am using jetty as my webserver.

Thanks in advance.

Answer

KARASZI Istv&#225;n picture KARASZI István · Apr 9, 2011

With DNS CNAME you can only point from one hostname to another. Port numbers are a totally different piece of cake.

There are several problems with the described situation:

  • if you set the CNAME in your DNS you probably have to modify your webserver as well to handle the new hostname because HTTP protocol works like this
  • as @stevevis said you'll loose your cookies and caches and even the rankings in the search engines
  • you still have to include the port number in your addresses: http://mycname:40080/webapps/index.jsp

You haven't mentioned but I assume that you cannot modify your webserver settings, because in this case you could modify the port number as well.

But there is a solution for this problem with small sacrifices.

You can install an HTTP reverse proxy server to forward the requests to the webserver (for e.g. HAProxy, nginx, etc.) but with this you'll loose the original clients' IP address (of course you can forward it in an HTTP header but you have to modify the code on your previous domain to handle this).