Skip to main content

Réseau - Le reverse proxy

DISCLAIMER : Cette page est en cours de rédaction et son contenu peut être faux ou inexact. Merci de lire cette page avec toutes les précautions nécessaires.

Titre de la page : <Techno> - <Titre de la procédure / du cours> (à supprimer une fois le titre placé)

Difficulté*image.png

Difficulté : Intermédiaire


Notions : Réseau, protocoles WEB HTTP(s)

*placer l'icône correspondant à la difficulté. supprimer cet encarts et le tableau.

image.png

image.png

image.png

image.png

image.png

 Débutant 
 Novice 
 Intermédiaire 
 Confirmé 
 Expert 

I. Introduction

Indicationsarchitectures réseaux modernes font que de misenombreux services passent aujourd'hui par une WEB UI et sont donc présentées à l'utilisateur en pagetant (peutque être"web supprimé)

Les

Apps".


Ceci est uneégalement citation.renforcé par les besoins de mobilité des utilisateurs et d'inter-connectivité entre les différentes entités participant à un flux de marchandises ( production, acheminement, entreposage, transformation, vente ).

De plus, l'explosion des API liés à l'automatisation des échanges (traçabilité produit, EDI, commandes, facturation électronique, etc...) ou des services (authentification, SSO, etc...) et du cloud font que les services amenés à être exposés se font nombreux.

Evidemment, pour des raisons de sécurité, ces services exposés sont répartis entre plusieurs zones réseaux micro-segmentées, dans des DMZ voire même dans des cas d'architecture hybride, décentralisée en tout ou partie sur le cloud.

 

Cela créée quelques problématiques :

    Multiplication des adresses et ports

    Risques de sécurité (IP internes visibles, surfaces d’attaque élargies)

    Gestion complexe des certificats SSL/TLS

    Absence de centralisation des logs, politiques, limitations, etc.

     

    C'est pour cela que l'on met en place un "Reverse Proxy".

     - par *****

    Ceci est une information.

    Ceci est une astuce ou optimisation.

    Ceci est est un avertissement.

    Ceci est un prérequis.

    Ceci est un bloc de code
    une série de commandes
    Ceci est une section repliable pour une étape optionnelle ou un fichier de configuration
    Ceci
    est
    un
    fichier
    de
    configuration
    colonne 1
    Colonne 2
    Colonne 3 ceci est
    un tableau

    Prérequis Matériels core GUI
      1 vcpu 2 Gb RAM 20Gb dd
        2 à 4 vcpu 2 à 4 Gb RAM 60Gb dd


        II. Chapitre1Le reverse proxy

         

        2.1 Section 1Définition

         

        Un 2.1.1reverse Sous-sectionproxy est un serveur intermédiaire qui reçoit les requêtes des clients et les redirige vers un ou plusieurs serveurs internes, redondés ou non, dans une ou plusieurs zones différentes.

        Ainsi, le client ne voit jamais les serveurs internes : il ne connaît qu’un point d’entrée unique.

         

        2.2 Principe général

         

        Un reverse proxy assure plusieurs fonctions essentielles :

          Point d’entrée unique pour toutes les requêtes

          Routage vers les services internes (path-based, host-based)

          Load balancing (répartition de charge)

          TLS/SSL termination (décryptage au bord du réseau)

          Caching des réponses

          Sécurité (WAF, rate limiting, filtrage)

          Observabilité (logs, métriques, traces)

           

           

           

          Info : En effet, dans reverse proxy, il y a la notion de Proxy permettant par nature de faire du cache sur le trafic.

           

          2.3 Reverse proxy vs forward proxy

           

          Il ne faut toutefois pas confondre le 'Reverse Proxy' et le 'Forward Proxy'

          Le rôle du Forward proxy est de masquer l'identité du client, de filtrer le traffic et se positionne côté client.

            Exemple : Proxy d'entreprise (squid, sophos proxy, etc...)

            Le rôle du Reverse proxy quand à lui est de masquer les serveurs, router les requêtes et participer à la sécurisation des services.

              Exemple : nginx, HAproxy, traefik, etc...

               

               

              gie technique

              3.1. Entrypoint

              Point d’entrée public du reverse proxy. Exemples :

                https://app.example.com

                Port 443 exposé par NGINX ou Traefik L’entrypoint reçoit la requête, établit la connexion TLS, inspecte les headers et choisit une route.

                3.2. Middleware

                Composants intermédiaires appliqués avant d’atteindre le backend. Fonctions typiques :

                  Redirections HTTP → HTTPS

                  Ajout d’en-têtes de sécurité

                  Rate limiting

                  Authentification

                  Réécriture d’URL Les middlewares sont très présents dans Traefik, Envoy, API Gateway.

                  3.3. Endpoint / Upstream

                  L’endpoint (ou upstream) est le serveur interne vers lequel le reverse proxy envoie la requête. Exemples :

                    frontend:3000

                    api-1:8080

                    admin:9000

                    3.4. Backend pool

                    Groupe de serveurs internes derrière une même route. Utilisé pour le load balancing.

                    3.5. Routing

                    Décision de redirection basée sur :

                      Le hostname (admin.example.com)

                      Le path (/api/orders)

                      Le header (X-Client-Type)


                      4. SSL Offloading / SSL Termination

                      4.1. Définition

                      Le reverse proxy gère le chiffrement TLS/SSL à la place des serveurs internes. Le proxy :

                        Reçoit la connexion HTTPS

                        Déchiffre la requête

                        Envoie du HTTP interne non chiffré aux backends

                        4.2. Avantages

                          Performance : les backends n’ont plus à gérer les handshakes TLS (CPU intense)

                          Centralisation : un seul endroit pour gérer les certificats

                          Sécurité :

                            Choix des protocoles TLS

                            OCSP stapling

                            HSTS

                            Mise à jour des suites cryptographiques

                            Simplicité : les services internes peuvent rester en HTTP

                            4.3. Exemple NGINX

                            nginx

                            server {
                                listen 443 ssl;
                                server_name api.example.com;
                            
                                ssl_certificate     /etc/ssl/certs/api.pem;
                                ssl_certificate_key /etc/ssl/private/api.key;
                            
                                location / {
                                    proxy_pass http://api_servers;
                                    proxy_set_header Host $host;
                                    proxy_set_header X-Real-IP $remote_addr;
                                }
                            }
                            

                             


                            5. Cas d’usage typiques

                            5.1. Microservices

                            Un reverse proxy sert d’ingress pour un ensemble de services internes. Exemple :

                              / → frontend

                              /api → API

                              /auth → service d’authentification

                              5.2. Load balancing

                              Algorithmes courants :

                                Round-robin

                                Least connections

                                Weighted

                                5.3. Sécurité

                                  WAF

                                  Rate limiting

                                  Filtrage des payloads

                                  Masquage des IP internes

                                  5.4. Caching

                                  Cache des assets statiques ou réponses API pour réduire la charge backend.


                                  6. Outils courants

                                  NGINX

                                  Le plus utilisé, très performant, très configurable.

                                  HAProxy

                                  Spécialiste du load balancing haute performance.

                                  Traefik

                                  Orienté microservices, configuration dynamique, middlewares puissants.

                                  Envoy

                                  Proxy moderne utilisé par Istio, très avancé (L7, observabilité, filtres).

                                  Caddy

                                  HTTPS automatique via Let’s Encrypt.


                                  7. Points que tu pourrais ajouter au cours

                                  7.1. L4 vs L7 Proxy

                                    L4 : proxy TCP brut (ne lit pas HTTP)

                                    L7 : proxy HTTP (comprend les routes, headers, cookies)

                                    7.2. WebSockets & reverse proxy

                                    Gestion des connexions persistantes (upgrade headers).

                                    7.3. Observabilité

                                      Logs centralisés

                                      Metrics Prometheus

                                      Traces distribuées (OpenTelemetry)

                                      7.4. Failover & haute disponibilité

                                        Proxy en cluster

                                        Keepalived / VRRP

                                        Load balancer devant le reverse proxy

                                        7.5. API Gateway vs Reverse Proxy

                                        Différences de philosophie (auth, quotas, transformations).


                                        8. Conclusion

                                        Le reverse proxy est un composant indispensable dans toute architecture moderne. Il permet :

                                          De sécuriser les services internes

                                          De centraliser le chiffrement TLS

                                          De router intelligemment les requêtes

                                          De répartir la charge

                                          D’ajouter des politiques de sécurité sans toucher au code

                                          De simplifier la gestion opérationnelle

                                          Il constitue la porte d’entrée de l’infrastructure, le point où se concentrent les décisions critiques de sécurité, de performance et d’observabilité.