Un reverse-proxy (ou proxy inverse) est un serveur qui se place devant un ou plusieurs serveurs web. Il reçoit les requêtes des clients, les achemine vers le serveur approprié, puis renvoie la réponse. Il est utilisé pour la répartition de charge, la sécurité, la mise en cache, le SSL/TLS termination et la publication de plusieurs applications sur un même port.
Contrairement au proxy direct (côté client), le reverse-proxy est côté serveur. Il agit comme une porte d'entrée unique vers les applications internes.
| Critère | Proxy direct | Reverse-proxy |
|---|---|---|
| Position | Du côté client | Du côté serveur |
| But principal | Contrôle des accès sortants, anonymat | Protection, répartition, performance |
| Configuration côté client | Nécessaire (navigateur) | Aucune (transparent) |
| Exemple | Squid | Nginx, HAProxy |
sudo apt update && sudo apt install nginx -y
Proxy vers un serveur interne sur le port 8080
# /etc/nginx/sites-available/default
server {
listen 80;
server_name mon-domaine.fr;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
proxy_pass : définit le serveur cible.proxy_set_header : transmet l'IP réelle du client.
upstream backend {
server 10.0.0.2:8080;
server 10.0.0.3:8080;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
server {
listen 443 ssl;
ssl_certificate /etc/ssl/certs/mon-cert.pem;
ssl_certificate_key /etc/ssl/private/mon-cert.key;
location / {
proxy_pass http://localhost:8080;
}
}
Quel est l'avantage principal d'un reverse-proxy en entreprise ?
Il permet de centraliser l'accès, de répartir la charge, de sécuriser les serveurs internes et de gérer le SSL de manière centralisée.
Écrire la directive Nginx pour proxy vers http://10.0.0.5:3000.
proxy_pass http://10.0.0.5:3000;
1. Un reverse-proxy se place du côté client.
2. Nginx peut être utilisé comme reverse-proxy.
3. La directive proxy_pass indique le serveur cible.
4. La terminaison SSL permet de décharger le serveur applicatif du chiffrement.
5. Un reverse-proxy peut faire du load balancing.