IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Serveurs (Apache, IIS,...) Discussion :

Proxy nginx et redirection


Sujet :

Serveurs (Apache, IIS,...)

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Par défaut Proxy nginx et redirection
    Bonjour,

    Je bute depuis quelques jours sur une configuration de nginx.

    Mon point de départ :
    - un serveur Apache (apache_1) avec des sites web persos, regroupés sous un nom de domaine, appelons le 'perso.fr'. J'ai plusieurs sites sous ce domaine (www, blog, domotique, edit, asso).
    - un routeur / firewall (OpnSense) qui reroute les ports 80/443 vers mon serveur apache_1.
    Ok, tout marche bien, pourquoi compliquer ?

    Je dois ajouter un serveur pour une autre asso, indépendante et avec un autre nom de domaine, appelons le 'autre.fr'. Le serveur Apache est hébergé sur une autre VM, apache_2.

    Ce que j'essaie de faire :
    - Créer un proxy dans une VM séparée avec nginx
    - Rediriger les ports 80/443 vers ce proxy
    - le proxy reroute tout ce qui concerne le domaine 'perso.fr' vers apache_1 et tout ce qui concerne 'www.autre.fr' vers apache_2

    Ben ça marche pas, j'ai soit des sites vides (page blanche, zéro retour de la part d'apache_1), soit des erreurs (CSRF issue, pas de connextion database) pour tout ce qui concerne apache_1. Le 'www.autre.fr' fonctionne correctement à priori.
    Ma config nginx :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    server {
      server_name www.autre.fr;
      access_log  /var/log/nginx/access.log  main;
    
      location ~ {
        proxy_pass_header Authorization;
        proxy_pass http://apache_2.domain.lan;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_buffering off;
        client_max_body_size 0;
        proxy_read_timeout 36000s;
        proxy_redirect off;
      }
    }
    
    server {
      server_name *.perso.fr;
      access_log  /var/log/nginx/access.log  main;
    
      location ~ {
        proxy_pass_header Authorization;
        proxy_pass http://apache_1.domain.lan;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_buffering off; 
        client_max_body_size 0;
        proxy_read_timeout 36000s;
        proxy_redirect off;
      }
    }

  2. #2
    Candidat au Club Avatar de Nsky__
    Homme Profil pro
    Ingénieur DevSecOps
    Inscrit en
    Mars 2025
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur DevSecOps
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2025
    Messages : 4
    Par défaut
    Hello,

    Effectivement, rediriger ton traffic (80/443) vers ton Nginx qui fait proxy est déjà une première bonne chose (je suis plutôt team HAProxy pour faire ça, mais deal !)

    De ce que je vois, il faudrait
    - Remplacer tes " location ~ {} " plutôt par des "location / {} " ; de mémoire les tildes sont utilisés pour des regex, ce qui ne semble pas du tout être le cas dans ta conf actuel.
    - Passer "autre.fr" aussi en wildcard, comme ça t'es iso des deux côtés (ça mange pas de pain dans un premier temps pour s'assurer que ça marche)
    - Selon tes applis utilisés derrière, peut être que tu devras déclarer les paramètres "proxy_set_header X-Forwarded-Proto" et "proxy_set_header X-Forwarded-Host" pour t'assurer que les connexions HTTPs soient bien forward (si tu en as ?)
    - En bonus, peut être changer l'access_log entre tes deux apache si tu veux avoir une meilleure visibilité entre tes deux domaines


    Et en conseil, j'éviterai qu'un nginx forward vers un apache qui lui même forward vers autre chose. Tu allonges ta chaine et si tu gères du HTTP/HTTPS, ça peut vite devenir un enfer à debug, car chacun portera potentiellement une config qui ira dans ce sens là.
    En soit, si tu as/souhaite une chaine complète en HTTPS : Fait le porter par Nginx (en l'état.), et laisse tes apps en HTTP avec pour seule possibilité qu'ils soient requêtable par ton proxy, et rien d'autre. Ça permet de faire ton cloisonnement entre tes servs, et de centraliser ta gestion à un seul endroit

    Concernant la problématique CSRF/DB & cie : Assure toi bien des URLs que tu appelles entre chaque, et de s'assurer que tu n'as pas d'incidence suite au fait que tu bascules ton port 80/443 sur ton Nginx. Il faut bien dissocier ton flux "entrant" de ce que peuvent faire tes apps entres elles en interne dans leur propre réseau

Discussions similaires

  1. [WS 2016] Windows Serveur 2016 - DNS Ovh - Reverse proxy nginx
    Par Nouss dans le forum Windows Serveur
    Réponses: 6
    Dernier message: 20/04/2020, 20h23
  2. Tomcat 9 et proxy Nginx
    Par Kiwikipu dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 16/08/2019, 02h35
  3. Reverse proxy NGINX
    Par ChMuX dans le forum Administration système
    Réponses: 0
    Dernier message: 30/11/2017, 17h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo