Apache et Nginx sur un même serveur
RésoluFred -
Bonjour,
Je souhaite installer Nginx en plus d'Apache2 sur Bullseye.
Comme il y a beaucoup de VirtualHost sur Apache2, je préfère ne pas changer les ports Apache (80 et 443) et basculer Nginx sur les ports 8080 et 8443.
Tout fonctionne, cependant, je dois ajouter le port pour accéder aux sites sous Nginx :
https://example.org:8443
Comment faire en sorte qu'Apache transmette l'adresse example.org à Nginx ?
Je pourrais utiliser un reverse proxy sous Apache qui suivant le nom de domaine redirige vers Nginx :
<VirtualHost *:80> ServerName example.org Permanent redirect / https://example.org </VirtualHost> <VirtualHost *:443> ServerName example.org ProxyRequests Off ProxyPreserveHost On SSLProxyEngine on <Location/> ProxyPass https://127.0.0.1:8443/ ProxyPassReverse / </Location>
Mais je ne suis pas certain que cela soit très propre...
Une autre solution serait d'avoir 2 serveurs distincts : un qui tourne sous Apache et l'autre sous Nginx.
Le problème c'est que n'ayant qu'une IP fixe publique via ma box, je ne peux rediriger mes ports que sur une seule machine....
Est-ce que HAProxy (que je ne connais pas) pourrait être une solution ?
Merci
Fred
Windows / Firefox 109.0
- Apache et Nginx sur un même serveur
- Changer serveur dns - Guide
- Serveur entrant et sortant - Guide
- Apache open office gratuit - Télécharger - Suite bureautique
- Serveur dns gratuit - Guide
- Nginx sur ma tele ✓ - Forum Virus
2 réponses
Bonjour,
Il n'y a pas un million de solutions, un couple IP:PORT ne peut être "routé" que vers une seule machine, et ne peut être écouté que par une seule application. C'est tout simplement dû à comment une connexion TCP(->TLS)->HTTP s'établit. À moins de faire du load-balancing au niveau IP ou TCP, mais alors le trafic serait dirigé de façon aléatoire vers l'un ou l'autre serveur, ce qui impliquerait que les deux serveurs doivent être configurés pour gérer tous les sites, bref, ce n'est pas ce qu'il te faut.
Si tu n'utilises pas les ports HTTP/HTTPS standards (80/443), alors il faut nécessairement les préciser dans l'URL. En réalité, toute URL (pas forcément du HTTP/HTTPS) contient un port, même lorsqu'on ne l'écrit pas explicitement.
La solution la plus adaptée, tu l'as citée : le serveur qui écoute 80/443 doit faire office de proxy inversé pour l'autre serveur. Par contre, Nginx est souvent plus adapté en frontal.