8

Sorry if this question makes no sense (no expert here), but I understand that tomcat listens to port 8080 and that url are usually addressed to 80. Is there a way to tell DNS that urls should point to 8080? Or how should I solve this issue?

Jérôme Verstrynge
  • 4,787
  • 7
  • 24
  • 35
  • possible duplicate of [Directing DNS to different ports](http://serverfault.com/questions/109067/directing-dns-to-different-ports) – mailq Sep 19 '11 at 18:41
  • [I think that this article explains how SRV can be used to specify a port](http://www.anta.net/nic/draft-andrews-http-srv-01.shtml). However, it appears that a URI port is taken as priority over the DNS assigned port. As I understand it, web browsers automatically add port 80 to the address, which might explain why I haven't managed to get this approach to work. – a2k42 Oct 02 '12 at 09:06

4 Answers4

8

DNS doesn't know anything about ports. If you want to have tomcat listen on port 8080 then you have a couple of options. The first is to user the port number in the URL

http://example.com:8080/

If you don't like to look of that then you can use your webserver as a port proxy e.g in Apache you can use mod_proxy

<VirtualHost *:80>
        ServerName      example.com
        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                allow from all
        </Proxy>
        ProxyPreserveHost On
        ProxyPass / http://example.com:8080/
        ProxyPassReverse / http://example.com:8080/
        ProxyErrorOverride Off
</VirtualHost>
user9517
  • 115,471
  • 20
  • 215
  • 297
  • What if you have another host listening on port 80? I have 2 servers on one machine (required in this case) but want to hide the port number in the URL even if it is the one listening for traffic to that web server. – Jay Blanchard Jun 23 '14 at 18:35
  • @JayBlanchard I don't really understand your comment and wont be drawn any further other than to say read the documentation on name based virtual hosts and mod_proxy. – user9517 Jun 23 '14 at 19:12
2

This is done by http://the.site.invaild:8080/.

It is not possible to give a port in the DNS. The DNS only maps names to IPs. But no ports.

mailq
  • 17,023
  • 2
  • 37
  • 69
2

I think it is best to make your tomcat to listen to port 80.You can do this if there is no other server listen to the port 80.For that you can edit server.xml

Change as follows,

<Connector port="80" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" />

Now you can try http://example.com/.This will correctly resolve to your tomcat instance.Because the default port of http is 80.

sunnychayen
  • 121
  • 2
2

There might be a possibility in solving this via DNS: SRV-Records

With SRV-Records you basically tell DNS to answer a question like "where is the httpd from example.org"? And DNS answers with an IP-Adress AND a Portnumber.

Although I don't know if the clients requests this information or if the browser just does an A-Record lookup and requests the website from the given IP using port 80, this might be worth a try if you want to do it with DNS.

Otherwise: Let ether Tomcat listen to port 80 or redirect 8080 to Tomcat via Apache's mod_proxy.

Subito
  • 388
  • 1
  • 3
  • 11
  • Common browsers do not have support for SRV record lookups yet - see http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/dns-srv-record-use-by-clients.html and the discussion [***here***](http://stackoverflow.com/a/9070480). – the-wabbit Oct 02 '12 at 09:33