I have three LXC containers (CN1, CN2, CN3). They each run their own Apache instance and have their own networking, so each container has their own private IP.
I set up all containers to listen on the private IP only for Apache. I also set up Nginx to act as a proxy from the host machine to direct any traffic based on the domain requested.
So, I have web1 -> CN1 (10.0.3.2), web2 -> CN2 (10.0.3.3), web3 -> CN3 (10.0.3.4).
When I go to web1, it shows the right page. When I go to web2, it shows the right page. When I go to web3, however, it shows web2's page.
Here's my Nginx server configs:
web2
server { server_name web2; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://10.0.3.3:802; } }
web3
server { server_name web3; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://10.0.3.4:804; } }
Apache's running on web3 and I get get the page when I telnet to it from the host machine itself:
root@SKYNet:/etc/nginx/sites-available# telnet 10.0.3.4 804 Trying 10.0.3.4... Connected to 10.0.3.4. Escape character is '^]'. GET / HTTP/1.1 Host: web3 HTTP/1.1 200 OK Date: Sun, 26 May 2013 17:00:27 GMT Server: Apache/2.2.22 (Ubuntu) Last-Modified: Sun, 26 May 2013 16:27:58 GMT ETag: "20457c-b1-4dda183dd360e" Accept-Ranges: bytes Content-Length: 177 Vary: Accept-Encoding Content-Type: text/html X-Pad: avoid browser bugIt works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.
I can also ping it from my home machine, and also from external sites that allow you to ping websites. I even had a friend test it and it displayed the same thing (web2's index file instead of its own).