Comment héberger plusieurs serveurs Web physiques derrière une seule adresse IP?

14

J'exécute plusieurs serveurs Web dans ma maison, chacun étant branché sur mon routeur.

Serveur A Serveur B Serveur C

Je ne peux actuellement utiliser qu'un seul serveur car mon port IP (xx.xxx.xx.xx) 80 pointe vers le serveur A. Cependant, certains domaines pointent vers le serveur A, certains vers B, etc.

Avec ma seule adresse IP, comment puis-je pointer vers chaque serveur? Par exemple, mes enregistrements A (hôte) pointent tous vers mon adresse IP uniquement.

Désolé si cela semble déroutant. Faites-moi savoir si je ne suis pas clair.

Chaque serveur exécute Ubuntu Server 12.04.02 et utilise Apache (si cela aide). Mon routeur est également un Netgear et mon FAI est Time Warner Cable.

Stephen Cioffi
la source
doublon possible de plusieurs serveurs Web derrière un seul pare
kobaltz
@kobaltz Pas exactement car il s'agit de serveurs différents, pas d'hôtes virtuels. Ce sont 3 serveurs physiques
Stephen Cioffi
Ma réponse dans la question est toujours la même chose où vous auriez un serveur proxy inverse qui serait ce qui est d'abord frappé après le routeur. De là, il pousserait les données vers l'un des trois serveurs. Vous pouvez même le faire à partir du routeur si vous utilisez quelque chose comme OpenWRT.
kobaltz
J'utilise actuellement l'explication dans ma réponse à l'autre question. J'ai un serveur de machine virtuelle qui avait une machine virtuelle pour la passerelle, puis 20 nœuds. Selon le sous-domaine et le nom de domaine, il envoie les données à l'un des 20 serveurs.
kobaltz

Réponses:

9

Les sites Web seront reconnus par l'en- Host:tête envoyé par le navigateur. Mais comme votre routeur n'est pas capable de démêler HTTP utilisé par l'hébergement virtuel, vous devrez choisir un serveur comme «point de terminaison» (et indiquer à votre routeur cette adresse en tant que Virtual Server / DMZ).

Ensuite, vous configurez cette machine en tant que serveur Web pour ses domaines et proxy pour les autres (par exemple en utilisant le proxy inverse Apache ), ou (peut-être mieux) vous installez un proxy sur cette machine et l'utilisez pour multiplexer les requêtes vers les autres serveurs . Certains domaines peuvent même être hébergés sur la même machine. nginxconvient à ce type de travail, mais vous pouvez également utiliser d'autres logiciels (par exemple pound).

Je pense que la deuxième solution est meilleure parce que vous n'avez pas du tout besoin de manipuler les configurations des serveurs Web: un proxy fait le mandataire et plusieurs serveurs Web font le service Web. Si vous devez ajouter des serveurs ou déplacer des hôtes virtuels, cette architecture est plus facile à maintenir.

                                    +-- virtual hosts 1..9 -- server B
                                    |
router ----- machine A (nginx?) ----+-- virtual hosts 10..23- server C
                                    |
                                    +-- virtual hosts 24..99- server D

La latence supplémentaire due au décodage de la demande deux fois (une fois par le proxy, une fois par son destinataire) est négligeable, et plus que compensée par l'accélération fournie par le proxy lui-même.

LSerni
la source
Si je crée un invité VM en tant que proxy, quel est le meilleur système d'exploitation à utiliser et quelles ressources matérielles dois-je allouer? Vous mentionnez la configuration de ce proxy sur la DMZ ... est-ce nécessaire? Je ne peux pas transférer uniquement les ports que je veux ouvrir afin qu'il y ait encore une couche de protection via le pare-feu du routeur et le NAT?
Reece
Les ressources du proxy ne sont pas un problème, elles seront fortement liées au réseau. Quant au système d'exploitation, je dirais un Unix à coup sûr, Linux ou BSD selon ce avec quoi vous êtes le plus à l'aise. Il existe également des appliances prêtes à l'emploi pour plusieurs solutions de virtualisation (vmware, virtualbox, xen, etc.). Et oui, vous pouvez certainement transférer uniquement les ports dont vous avez besoin.
LSerni