Redirection de port

Redirection des ports en domaines.

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Je souhaite mettre plusieurs applications nodejs sur une même machine, sur les ports http (80) et https (443). Je souhaite donc pouvoir accéder à : http://monsite1.fr/, http://monsite2.fr/ simultanément.

Actuellement je sais faire en sorte que : le port distant 80 (http://monsite.fr/) redirige vers le port 1080 interne. Avec : iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port $mon_port.

Si je souhaite que :

  • http://monsite1.fr/ et https://monsite1.fr/ redirige vers le port interne 1080 et 1443.
  • http://monsite2.fr/ et https://monsite2.fr/ redirige vers le port interne 2080 et 2443.

Comment dois-je faire ?

Je pense avoir trouvé une solution (ci-dessous), mais je souhaite avoir un avis extérieur avant d’essayer quelques choses dont je ne suis pas sûr.

Ajouter l’option -d à iptables comme ceci ?

iptables -t nat -A PREROUTING -p tcp -d $mon_domain --dport 80 -j REDIRECT --to-port $mon_port

Merci.

En effet.

Mais ce que je ne comprend pas bien, c’est par quoi tu passes comme serveur pour distribuer les sites ? (Je ne connais pas bien NodeJS, mais c’est un serveur qui est directement émulerTerme non adéquat ?)

Car si c’est pour un serveur de développement, ça va bien, mais si c’est pour un serveur de Prod, généralement on passe par un couche comme Apache ou nginx.

Par exemple, sur le site https://sonar.winxaito.com (Serveur Sonarqube de ZestWriter), c’est un serveur Java qui fait fonctionner le site. Mais quand on se connecte, c’est apache qui prend la requête, et la redirige sur un port spécifique au serveur Java de sonar. (Système de proxy).

On utilise ça pour des raisons de sécurité (Et en plus tu as moyen d’utiliser les virtualhost).

Je ne me suis jamais posé la question d’utiliser un reverse proxy jusqu’à la je n’ai eu aucun problème de sécurité.

Et certaine de mes applications répondent uniquement aux requêtes des Webhook de facebook, donc j’ai déjà un intermédiaire avec l’utilisateur final.


Si je choisi Apache je dois le configurer/installer, puis ensuite j’ai « juste » à créer un fichier virtualhost avec la configuration à l’intérieur pour chaque domaine ?

C’est ça.

Et encore, il n’y a vraiment pas grand chose à configurer dans apache.
Voici pour example le virtualhost du Sonarqube de ZestWriter:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<VirtualHost *:443>
        ServerName sonar.winxaito.com
        ServerAdmin une@adresseemail.com

        #Sonar proxy conf
        ProxyPass / http://localhost:9000/
        ProxyPassReverse / http://sonar.winxaito.com/
        ErrorDocument 503 http://vps.winxaito.com/sonar/offline

        ErrorLog ${APACHE_LOG_DIR}/sonar.winxaito.com_error.log
        CustomLog ${APACHE_LOG_DIR}/sonar.winxaito.com_access.log combined


        #SSL (By Let's Encrypt)
        SSLCertificateFile /etc/letsencrypt/live/sonar.winxaito.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/sonar.winxaito.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

Ici, l’adresse https://sonar.winxaito.com est rediriger sur l’adresse localhost:9000

Je ne comprend pas bien le problème.

Avec un serveur apache, tu peux rediriger avec un proxy sur un autre port. Le SSL ne change rien. Dans mon exemple, le serveur Sonarqube fonctionne aussi bien avec que sans SSL et il est sur le port 9000.

Après si tu ne veux pas passer par un serveur apache, il me semble que ce que tu souhaites faire n’est pas réalisable, ou alors je ne sais pas comment.

Ce que je souhaitais savoir c’est si apache gère le certificat (HTTPS) mon application a juste besoin d’être sur le port 80 ? Je n’ai pas besoin à configurer la connexion SSL ?

J’ai un problème avec le proxy reverse, mes websockets ne fonctionnent plus. :/

J’ai trouvé ce module : https://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html mais je ne sais pas comment l’installé il n’est pas présent sur ma version d’apache 2.2 debian.

+0 -0

Ce que je souhaitais savoir c’est si apache gère le certificat (HTTPS) mon application a juste besoin d’être sur le port 80 ? Je n’ai pas besoin à configurer la connexion SSL ?

Pour le SSL, tu peux passer par Let’s encrypt, c’est gratuit et facile à mettre en place

J’y arrive pas :(

root@vps312:/etc/apache2/sites-available# apache2ctl -S
VirtualHost configuration:
*:8080                 vps.a312.fr (/etc/apache2/sites-enabled/zdsenv.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex proxy: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
Define: ENABLE_USR_LIB_CGI_BIN
User: name="www-data" id=33
Group: name="www-data" id=33

Je l’ai fais pour la beta du sdz, j’ai fais une erreur ? L’url d’acces est bien vps.a312.fr:8080, où je me suis trompé?

<VirtualHost *:80>
    ServerName vps.a312.fr

    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://vps.a312.fr/

    ErrorLog ${APACHE_LOG_DIR}/zdsenv_error.log
    CustomLog ${APACHE_LOG_DIR}/zdsenv_access.log combined
</VirtualHost>

curl 127.0.0.1 et curl vps.a312.fr retourne le html du zds :( Mais sur mon pc rien "ERR_CONNECTION_REFUSED".

+0 -0

J’avais une règle de redirection du port 80 vers le 1080… Merci iptables -L -vt nat XD

Désolé du dérangement @winxaito xD

AJOUTER : iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port $mon_port

VOIR : iptables -L -vt nat

SUPPRIMER : iptables -t nat -D PREROUTING 1
+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte