Apache et Nginx sur un même serveur

Résolu/Fermé
Fred - 11 févr. 2023 à 20:04
 Fred - 13 févr. 2023 à 19:51

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

A voir également:

2 réponses

avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
13 févr. 2023 à 19:10

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.

0

Merci beaucoup pour ta réponse complète. Y a plus qu'à ;)

Fred

0