Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/08/2022, à 09:20

Nicolas550

nginx : redirection URL cible vers IP locale (Résolu)

Bonjour,

J'ai 2 serveurs web en https sur 2 serveurs distincts.

J'ai un routeur en entrée qui fait parefeu et routeurs sur le port 443

J'ai 1 certificat SSL par serveur et pour la certification via lets encrypt c'est la galère car je ne peux pas router le port 80 simultanément sur les 2 machines.

Est ce que Nginx pourrait résoudre mon problème :
-router le http via le port 80 suivant l'url cible vers la bonne IP locale
-router le https via le port 443 suivant l'url cible vers la bonne IP locale

Merci.

Dernière modification par Nicolas550 (Le 05/09/2022, à 07:25)

Hors ligne

#2 Le 31/08/2022, à 14:38

bruno

Re : nginx : redirection URL cible vers IP locale (Résolu)

Bonjour,

Est-ce que tu as fait une recherche sur « nginx reverse proxy » ? Regardé la doc nginx ?
Il y a des tas de ressources qui décrivent clairement comment faire cela avec la directive proxy_pass. Celle ci permet de configurer un mandataire inverse (reverse proxy) qui redirige les requêtes sur un domaine donné vers un autre serveur / port.

Si tu n'y arrives pas, il faudra nous montrer ton fichier de configuration et décrire précisément ton réseau et la configuration NAT/PAT de ton routeur.

Hors ligne

#3 Le 02/09/2022, à 15:22

Nicolas550

Re : nginx : redirection URL cible vers IP locale (Résolu)

Bonjour,
Oui j'ai regarder un tas de tuto pour comprendre la configuration du reverse proxy de nginx mais je dois l'adapter à 2 sites compliqués :
-Mesh central (fonctionnel) xxx.freeddns.org
-Web mail Axigen (non fonctionnel) yyy.freeddns.org

Pour yyy.freeddns.org, le nginx me retourne l'IP local 192.168.1.xx du proxy_pass et donc depuis l'extérieur le site n'est pas joignable.

Si dessous la configuration actuelle de nginx si vous avez une idée.

Merci.

nginx.conf:

worker_processes 1;
events {
 worker_connections 1024;
}
http {
         # HTTP server. In this example, we use a wildcard as server name.
         server {
                 listen 80;
                 server_name xxx.freeddns.org;
                 location / {
                         proxy_pass [url]http://127.0.0.1:800/[/url];
                         proxy_http_version 1.1;

                         # Inform MeshCentral about the real host, port and protocol
                         proxy_set_header X-Forwarded-Host $host:$server_port;
                         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                         proxy_set_header X-Forwarded-Proto $scheme;
                         }
                 }
         # HTTPS server. In this example, we use a wildcard as server name.
         server {
                 listen 443 ssl;
                 server_name xxx.freeddns.org;
                 # MeshCentral uses long standing web socket connections, set longer timeouts.
                 proxy_send_timeout 330s;
                 proxy_read_timeout 330s;
                 # We can use the MeshCentral generated certificate & key
                 ssl_certificate /home/moi/meshcentral-data/webserver-cert-public.crt;
                 ssl_certificate_key /home/moi/meshcentral-data/webserver-cert-private.key;

                 #ssl_certificate /home/moi/cert.pem;
                 #ssl_certificate_key /home/moi/cert_priv.key;


                 ssl_session_cache shared:WEBSSL:10m;
                 ssl_ciphers HIGH:!aNULL:!MD5;
                 ssl_prefer_server_ciphers on;

                 location / {
                         proxy_pass [url]http://127.0.0.1:450/[/url];
                         proxy_http_version 1.1;

                         # Allows websockets over HTTPS.
                         proxy_set_header Upgrade $http_upgrade;
                         proxy_set_header Connection "upgrade";
                         proxy_set_header Host $host;
                         # Inform MeshCentral about the real host, port and protocol
                         proxy_set_header X-Forwarded-Host $host:$server_port;
                         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                         proxy_set_header X-Forwarded-Proto $scheme;
                         }
                 }


        server {
                #############Begin Server and Listener Specific Configuration##########
                listen 443 ssl;
                server_name yyy.freeddns.org;
                #access_log /var/log/nginx/access.log combined_ssl;
                #Certificate & Key .PEM Format
                ssl_certificate /home/moi/cert.pem;
                ssl_certificate_key /home/moi/cert_priv.key;
                #PFS
                        #ssl_dhparam /etc/nginx/dhparam2.pem;
                #CIPHERS AND COMMON ATTRIBUTES
                ssl_session_cache shared:SSL:10m;
                ssl_prefer_server_ciphers on;
                ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
                ssl_ciphers AES256+EECDH:AES256+EDH:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:!
ECDHE-RSA-AES128-SHA256:!AES-256-CBC:!ECDHE-RSA-AES128-GCM-SHA256:!ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:!AES128-GCM-SHA256:DHE
-RSA-AES256-SHA:!RC4-SHA:!RC4:HIGH:!MD5:!aNULL:!EXP:!EDH:!ADH:!LOW;

                #Listener Specific Settings Below
                client_max_body_size 250M;
                #End Configuration Parameters Global to this Listener

                #Our Axigen Webmail sits behind nginx;
                #Active Sync Forwarding/Routing
                location ~* ^/Microsoft-Server-ActiveSync {
                        proxy_http_version 1.1;
                        proxy_set_header Host $host;
                        proxy_set_header X-Forwarded-Host $host:$server_port;
                        proxy_set_header X-Forwarded-Server $host:$server_port;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        #Added for viewing client IP and SSL protocol in security.log of Axigen.
                        proxy_set_header User-Agent “${remote_addr}///${ssl_protocol}__${ssl_cipher}///${http_user_agent}”;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_read_timeout 500s;
                        proxy_send_timeout 500s;
                        fastcgi_read_timeout 500s;
                        fastcgi_send_timeout 500s;
                        proxy_pass [url]http://192.168.1.91:80[/url];
                        }
                location /EWS/ {
                        proxy_http_version 1.1;
                        proxy_set_header Host $host;
                        proxy_set_header X-Forwarded-Host $host:$server_port;
                        proxy_set_header X-Forwarded-Server $host:$server_port;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_pass [url]http://192.168.1.91:80/EWS[/url];
                        }

                #End Active Sync
                ############################
                #Root Webhost - WebMail Access Portal
                location / {
                        proxy_http_version 1.1;
                        proxy_set_header Host $host;
                        proxy_set_header X-Forwarded-Host $host:$server_port;
                        proxy_set_header X-Forwarded-Server $host:$server_port;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        #Added for viewing client IP and SSL protocol in security.log of Axigen.
                        proxy_set_header User-Agent “${remote_addr}///${ssl_protocol}__${ssl_cipher}///${http_user_agent}”;
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_pass [url]http://192.168.1.91:80[/url];
                        proxy_read_timeout 90s;
                        }
                #Root Webhost - End WebMail Portal
                #######################################
                }

        server {
                listen 80;
                #We don’t want any non ssl traffic so redirect them all…
                server_name yyy.freeddns.org;
                return 301 https://$server_name$request_uri;
                }
        }

Dernière modification par Nicolas550 (Le 03/09/2022, à 08:42)

Hors ligne

#4 Le 02/09/2022, à 17:42

bruno

Re : nginx : redirection URL cible vers IP locale (Résolu)

Merci de modifier ton message pour mettre le contenu du fichier de configuration entre balise [ code ] (icône <>) ce sera beaucoup plus lisible.

Pour que cela fonctionne il faut que :
- les noms de domaine xxx.freeddns.org et yyy.freeddns.org pointent vers ton IP publique ;
- ton routeur soit configuré pour rediriger les requêtes sur les ports 80 et 443 vers les mêmes ports du serveur qui héberge le nginx en frontal (celui dont tu as donné la conf) ;
- pour les paramètres de proxy dans un premier temps n'utilise que :

location / {
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_pass http://192.168.1.91;
}

Pour déboguer, regarde le résultat de :

curl -I https://yyy.freeddns.org

de l'extérieur et depuis le réseau local.

Hors ligne

#5 Le 05/09/2022, à 07:25

Nicolas550

Re : nginx : redirection URL cible vers IP locale (Résolu)

bruno a écrit :

Merci de modifier ton message pour mettre le contenu du fichier de configuration entre balise [ code ] (icône <>) ce sera beaucoup plus lisible.

Pour que cela fonctionne il faut que :
- les noms de domaine xxx.freeddns.org et yyy.freeddns.org pointent vers ton IP publique ;
- ton routeur soit configuré pour rediriger les requêtes sur les ports 80 et 443 vers les mêmes ports du serveur qui héberge le nginx en frontal (celui dont tu as donné la conf) ;
- pour les paramètres de proxy dans un premier temps n'utilise que :

location / {
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_pass http://192.168.1.91;
}

Pour déboguer, regarde le résultat de :

curl -I https://yyy.freeddns.org

de l'extérieur et depuis le réseau local.


Problème régler avec la proposition précédente de Bruno (simplification des lignes).

Merci.

Hors ligne