1

Possible Duplicate:
Running two services on port 80

I have a QNAP TS-459 Pro II that comes with an Apache webserver which runs on port 80.

I'd also like to run a small Sinatra app; also on port 80.

I'd like Apache to serve up example.com and foo.example.com, but I'd like Sinatra to serve up bar.exapmle.com.

Is it possible to have both webservers running on the same port but only answer based on specific domain binding?

macek
  • 315
  • 2
  • 4
  • 10

2 Answers2

2

Only one app can have a particular port/IP combination open at a time , but you can approximate what you want by setting Apache up as a reverse proxy.

The highlights -

  • Run Apache on port 80, and enable mod_proxy
  • Do NOT turn on ProxyRequests (this is for forward proxying only)
  • Run your other app on a different port and/or IP
  • Use Apache virtual hosts and reverse proxy configuration to direct traffic to the appropriate site.

You can see these links for more info -

ApacheTutor article

Apache mod_proxy documentation

Bill B
  • 591
  • 2
  • 4
1

No, not unless you have two different public IP's on the server which each server can bind to. Each server then needs to explicitly listen on a specific IP/port combination and it will 'just work'.

The normal solution here if you only have access to a single IP address is to set up your Sinatra server on a different port (localhost:808* is popular), and then use mod_proxy in Apache to manage your Sinatra servers domain internally.

Matthew Scharley
  • 1,507
  • 3
  • 15
  • 19
  • can you provide a mod_proxy example? If so, I will mark this answer as accepted. – macek Oct 04 '11 at 18:26
  • @macek: Personally we use nginx as the proxy and main webserver so I don't have one on hand. The Apache docs are really good though, you're looking to implement a reverse proxy: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html – Matthew Scharley Oct 04 '11 at 20:08