4

Given: two dns names which points to one machine: "mysrv" and "myapp.mysrv". This machine has two ip address (1.1.1.1 and 1.1.1.2).

I need to set up IIS7 on 1.1.1.1 for myapp.mysrv and TomCat for 1.1.1.2 for mysrv.
I need the server serves two resources (mysrv and myapp.mysrv ) on 80 port.

What I did: In TomCat's config (server.xml) I add 'address' attribute to Connector element:

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="80" minProcessors="5"
           address="1.1.1.2"
           maxProcessors="75"
           enableLookups="false" redirectPort="8443" acceptCount="10" />

and

<Engine name="Standalone" defaultHost="mysrv" debug="0">
    <Host name="mysrv" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="false">

Then in IIS Manager I create a site and set up binding for it as: Type=http;Host Name=myapp.srv;Port=80; IP Address=1.1.1.1

But when I try to start the site I get two errors (in EventLog): 1. World Wide Web Publishing Service (WWW Service) did not register the URL prefix http://myapp.mysrv:80:1.1.1.1/ for site 2. The site has been disabled. The data field contains the error number.

2. Unable to bind to the underlying transport for [::]:80. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine. The data field contains the error number.

Shrike
  • 195
  • 4
  • 11

2 Answers2

7

By default, IIS binds to port 80 on all IP's on the machine. To disable this behavior in IIS 7, execute the following command, substituting in the IP address you want IIS to listen on:

netsh http add iplisten ipaddress=xxx.xxx.xxx.xxx

You'll need to restart IIS for the change to take effect.

Evan Anderson
  • 141,881
  • 20
  • 196
  • 331
  • Yeah! IIS and TomCat have started and running together. Great, thanks. Localy I get access two apps (on IIS through myapp.mysrv and on TomCat through mysrv). But remotely I have access to myapp.mysrv and no access to mysrv. On the server I add these line to etc/hosts: 1.1.1.1 myapp.mysrv 1.1.1.2 mysrv – Shrike Jul 03 '09 at 19:17
  • This worked for me, thanks! I'm now able to run IIS7 and Apache on the same server under port 80. – Nick Bolton Aug 29 '09 at 00:15
  • @EvanAnderson would you mind looking at my question please? It relates to this one, but with a twist http://serverfault.com/questions/620805/tomcat-and-iis-7-both-on-different-ips-and-different-ports – n00b Aug 15 '14 at 20:44
  • Thank you so much - this allowed me to host a bunch of Atlassian products, which run their own instance of Tomcat (JIRA Software, Confluence, etc) alongside my IIS applications. – eckza Jul 07 '17 at 13:03
  • 1
    @kivetros - Glad I could help! – Evan Anderson Jul 07 '17 at 21:57
0

Try doing:

httpcfg set iplisten -i 1.1.1.1:80

from the command prompt. It could be socket pooling...IIS wants to listen on all IP's by default (as Evan said), so it throws a fit when Tomcat takes one of them away.

Adam Brand
  • 6,127
  • 2
  • 30
  • 40