Outre Apache, Nginx est le serveur Web le plus populaire disponible. En plus d’être un serveur web, il peut également être utilisé comme équilibreur de charge ou proxy inverse. Dans ce didacticiel, Quantrimang.com vous montrera comment utiliser Nginx comme proxy inverse.
Qu'est-ce qu'un proxy inverse ?
Un serveur proxy agit comme intermédiaire entre un client et un autre serveur. Le serveur proxy récupère les ressources du serveur auquel vous souhaitez vous connecter et vous les envoie pour visualisation. Un proxy inverse fonctionne de la même manière, sauf que les rôles sont inversés. Lorsque vous demandez des informations au serveur, le proxy inverse conserve la demande et l'envoie au serveur backend approprié. Cela permet aux administrateurs système d'utiliser le serveur pour plusieurs applications, tout en garantissant un flux de trafic plus fluide entre le client et le serveur.
Avantages des proxys inverses
En fonction de votre application, vous pouvez avoir différents cas d'utilisation du proxy inverse.
- Un 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, elles ne peuvent pas toutes « écouter » en même temps sur le port 80 ou 433. Avec un proxy inverse, vous pouvez le configurer pour rediriger le trafic vers des applications individuelles si nécessaire.
- Équilibrage de charge - Si vous disposez de plusieurs serveurs exécutant la même application, vous pouvez utiliser un proxy inverse pour répartir le trafic uniformément sur chaque serveur.
- Pare-feu d'application Web - Vous pouvez utiliser un proxy inverse pour masquer votre application et également pour filtrer les adresses IP indésirables ou vous protéger contre les attaques DDOS .
- Journalisation et audit faciles – Étant donné que tout le trafic entrant est géré par un proxy inverse, il est plus facile de journaliser et de surveiller les flux de trafic.
Configurer Nginx comme proxy inverse
Pour configurer Nginx en tant que proxy inverse, l'article utilisera le paramètre proxy_pass dans le fichier de configuration Nginx.
Remarque : Ce tutoriel suppose que vous avez une certaine connaissance de Nginx et que vous avez installé et configuré Nginx sur votre serveur.
Dans la plupart des cas d'utilisation, Nginx sera le serveur frontal, « écoutant » le port 80 (HTTP) ou 443 (HTTPS) pour les requêtes entrantes. Puisqu’il ne peut y avoir qu’un seul service « en écoute » sur le port 80 ou 443, votre application devra « écouter » sur un autre port, comme le port 8081. La configuration la plus simple ressemblera à ceci :
server {
listen 80;
listen [::]:80;
server_name myapp.com;
location / {
proxy_pass http://localhost:8081/;
}
}
Cela signifie que toutes les requêtes adressées à myapp.com sur le port 80 seront redirigées vers le port 8081.
Réglages avancés
En plus de la directive proxy_pass , il existe plusieurs autres directives que vous pouvez utiliser pour une configuration plus avancée.
- proxy_set_header - Cela vous permet de définir un en-tête à envoyer à l'application en arrière-plan. Par exemple, consultez 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 les en-têtes de proxy nécessaires à transmettre à l'application, lui indiquer l'adresse IP et l'adresse distante de la demande, puis afficher le contenu correct sur le site Web demandeur.
- proxy timeout - Cela vous permet de définir la valeur du délai d'expiration pour l'envoi et la 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 conserver temporairement la réponse du serveur proxy et de l'envoyer uniquement au serveur demandeur une fois que le serveur proxy a fini de répondre. Par exemple:
proxy_buffers 32 4k;
Si votre application envoie un grand nombre de fichiers, vous souhaiterez peut-être désactiver proxy_buffers :
proxy_buffering off;
Comme vous pouvez le constater, Nginx est un serveur proxy inverse qui a de nombreuses utilisations. Le plus gros avantage est qu’il est simple à configurer, facile à utiliser et qu’il vous permet néanmoins d’évoluer dans des scénarios plus complexes. Pour plus de détails, vous pouvez consulter la documentation du module proxy Nginx (sur https://nginx.org/en/docs/http/ngx_http_proxy_module.html) ou des exemples de configuration (sur https://www .nginx.com/resources/wiki /start/topics/examples/full/).
J'espère que vous réussirez.