Contrairement à Apache, pas plus Nginx Le serveur Web le plus populaire sur le marché. En plus d'être un serveur Web, il peut également être utilisé comme compteur de charge ou proxy inverse. Dans ce didacticiel, nous expliquerons comment vous pouvez tirer parti de Nginx en tant que proxy inverse.
Qu'est-ce que le proxy inverse?
Le serveur proxy agit en tant qu'intermédiaire entre le client et un autre serveur. Il récupère les ressources du serveur auquel vous souhaitez vous connecter et vous les envoie pour les visualiser. Le proxy inverse fonctionne de la même manière, sauf que le rôle est inverse. Lorsque vous demandez des informations à un serveur, le proxy inverse suspend la demande et l'envoie au serveur principal approprié. Cela permet à l'administrateur système d'utiliser un serveur pour plusieurs applications et d'assurer un flux de trafic plus fluide entre le client et le serveur.
Avantages du proxy inverse
Sur votre demande, vous pouvez avoir différents cas d'utilisation pour l'agent inverse.
- Le proxy inverse vous permet d'exécuter plusieurs applications sur le même serveur. Si plusieurs applications s'exécutent sur le même serveur, tout le monde ne peut pas entendre le port 80 ou 433 en même temps. En utilisant un proxy inverse, vous pouvez configurer ce dernier pour qu'il redirige le trafic vers des applications individuelles, si nécessaire.
- Équilibrage de la charge - Si plusieurs serveurs exécutent la même application, vous pouvez utiliser un proxy inverse pour répartir le trafic de manière égale sur chaque serveur.
- Pare-feu d'application Web - Vous pouvez utiliser un proxy inverse pour masquer votre application du public et également pour filtrer la protection non souhaitée contre les attaques IP ou DDOS.
- Enregistrement et audit faciles - Comme tout le trafic entrant est géré par proxy inverse, il est plus facile d'enregistrer et de surveiller les flux de trafic.
Configurer Nginx en tant que proxy inverse
Pour configurer Nginx en tant que proxy inverse, nous utiliserons le paramètre proxy_pass dans les fichiers de configuration de Nginx.
Dans la plupart des cas d'utilisation, Nginx sera le serveur faisant face au serveur frontal, écoutant le port 80 (HTTP) ou 443 (HTTPS) pour les demandes entrantes. Etant donné qu'un seul service écoute le port 80 ou 443, votre application devra écouter un autre port, tel que le port 8081. La configuration la plus simple serait la suivante:
server { listen 80; listen [::]:80; server_name myapp.com; location / { proxy_pass http://localhost:8081/; } }
Cela signifie que toutes les demandes entrantes sur myapp.com seront redirigées sur le port 80 vers le port 8081.
Paramètres avancés
En plus du routage proxy_pass , Il existe plusieurs autres directions que vous pouvez utiliser pour une configuration plus avancée.
proxy_set_header - Cela vous permet de définir l'en-tête à envoyer à l'application d'arrière-plan. Par exemple, voir la configuration suivante:
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Vous pouvez définir l'en-tête du proxy à transmettre à l'application afin qu'elle connaisse l'adresse IP de la demande et l'adresse distante, puis génère le contenu correct pour l'emplacement de la demande.
délai d'attente du proxy - Cela vous permet de définir la valeur du délai d’envoi et de réception des demandes de proxy. Par exemple:
proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90;
proxy_buffers - Cela permet à Nginx de suspendre temporairement la réponse du proxy et de l'envoyer uniquement au serveur de requêtes une fois que celui-ci a répondu. Par exemple:
proxy_buffers 32 4k;
Si votre application envoie une grande partie du fichier, vous devrez peut-être le désactiver. proxy_buffers:
proxy_buffering off;
Sommaire
Comme vous pouvez le constater, Nginx est un bon serveur proxy inverse. La meilleure chose à ce sujet est que sa configuration est simple et facile à utiliser, mais elle vous permet néanmoins de procéder à une mise à niveau pour obtenir des scénarios plus complexes. Pour plus de détails, vous pouvez vérifier La documentation du module proxy Nginx ou Exemples de configuration.