Mettre en place un serveur Web (21/28) : Nginx
Table des matières:
- Conditions préalables
- Utilisation de Nginx comme proxy inverse
- Passer les en-têtes de demande
- Configuration de Nginx en tant que proxy inverse sur un serveur proxy non HTTP
- Options de proxy inverse Nginx courantes
- Conclusion
Un proxy inverse est un service qui prend une demande client, envoie la demande à un ou plusieurs serveurs proxy, récupère la réponse et fournit la réponse du serveur au client.
En raison de ses performances et de son évolutivité, NGINX est souvent utilisé comme proxy inverse pour les serveurs HTTP et non HTTP. Une configuration de proxy inverse typique consiste à placer Nginx devant les applications Node.js, Python ou Java.
L'utilisation de Nginx comme proxy inverse vous offre plusieurs avantages supplémentaires:
- Équilibrage de charge - Nginx peut effectuer un équilibrage de charge pour distribuer les demandes des clients sur les serveurs mandataires, ce qui améliore les performances, l'évolutivité et la fiabilité. Mise en cache - Avec Nginx comme proxy inverse, vous pouvez mettre en cache les versions pré-rendues des pages pour accélérer les temps de chargement des pages. Il fonctionne en mettant en cache le contenu reçu des réponses des serveurs mandataires et en l'utilisant pour répondre aux clients sans avoir à contacter le serveur mandaté pour le même contenu à chaque fois. Terminaison SSL - Nginx peut agir comme un point de terminaison SSL pour les connexions avec les clients. Il gérera et déchiffrera les connexions SSL entrantes et chiffrera les réponses du serveur mandaté. Compression - Si le serveur mandaté n'envoie pas de réponses compressées, vous pouvez configurer Nginx pour compresser les réponses avant de les envoyer aux clients. Atténuation des attaques DDoS - Vous pouvez limiter les demandes entrantes et le nombre de connexions par adresse IP unique à une valeur typique pour les utilisateurs réguliers. Nginx vous permet également de bloquer ou de restreindre l'accès en fonction de l'emplacement du client et de la valeur des en-têtes de demande tels que «User-Agent» et «Referer».
Cet article décrit les étapes requises pour configurer Nginx en tant que proxy inverse.
Conditions préalables
Nous supposons que Nginx est installé sur votre serveur Ubuntu, CentOS ou Debian.
Utilisation de Nginx comme proxy inverse
Pour configurer Nginx en tant que proxy inverse sur un serveur HTTP, ouvrez le fichier de configuration de bloc de serveur du domaine et spécifiez un emplacement et un serveur proxy à l'intérieur de celui-ci:
server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:8080; } }
L'URL du serveur
proxy_pass
est définie à l'aide de la directive
proxy_pass
et peut utiliser
HTTP
ou
HTTPS
comme protocole, nom de domaine ou adresse IP, et un port facultatif et URI comme adresse.
La configuration ci-dessus indique à Nginx de transmettre toutes les demandes à l'emplacement
/app
au serveur mandaté à
http://127.0.0.1:8080
.
/etc/nginx/sites-available
, tandis que sur CentOS dans le répertoire
/etc/nginx/conf.d
.
Pour mieux illustrer le fonctionnement des directives
location
et
proxy_pass
, prenons l'exemple suivant:
server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:8000/wordpress/; } }
Si un visiteur accède à
http://example.com/blog/my-post
, Nginx procurera cette demande à
http://node1.com:8000/wordpress/my-post
.
Lorsque l'adresse du serveur mandaté contient un URI (
/wordpress/
), l'URI de demande transmis au serveur mandaté est remplacé par un URI spécifié dans la directive. Si l'adresse du serveur proxy est spécifiée sans URI, l'URI de demande complète est transmis au serveur proxy.
Passer les en-têtes de demande
Lorsque Nginx envoie une requête par proxy, il définit automatiquement deux champs d'en-tête dans une requête par proxy du client,
Host
et
Connection
, et supprime les en-têtes vides.
Host
est défini sur la variable
$proxy_host
et la
Connection
est définie sur close.
Pour ajuster ou définir des en-têtes pour les connexions proxy, utilisez la directive
proxy_set_header
, suivie de la valeur d'en-tête. Vous pouvez trouver une liste de tous les en-têtes de demande disponibles et leurs valeurs autorisées ici. Si vous souhaitez empêcher la transmission d'un en-tête au serveur mandaté, définissez-le sur une chaîne vide
""
.
Dans l'exemple suivant, nous modifions la valeur du champ d'en-tête
Host
en
$host
et supprimons le champ d'en
Accept-Encoding
tête
Accept-Encoding
en définissant sa valeur sur une chaîne vide.
location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }
Chaque fois que vous modifiez le fichier de configuration, vous devez redémarrer le service Nginx pour que les modifications prennent effet.
Configuration de Nginx en tant que proxy inverse sur un serveur proxy non HTTP
Pour configurer Nginx en tant que proxy inverse sur un serveur proxy non HTTP, vous pouvez utiliser les directives suivantes:
-
fastcgi_pass- proxy inverse vers un serveur FastCGI.uwsgi_pass- proxy inverse vers un serveur uwsgi.scgi_pass- proxy inverse vers un serveur SCGI.memcached_pass- proxy inverse vers un serveur Memcached.
L'un des exemples les plus courants est d'utiliser Nginx comme proxy inverse de PHP-FPM:
server { #… other directives location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }
Options de proxy inverse Nginx courantes
La diffusion de contenu via HTTPS est devenue une norme de nos jours. Dans cette section, nous vous donnerons un exemple de configuration de proxy inverse HTTPS Nginx, y compris les paramètres et en-têtes de proxy Nginx recommandés.
location/ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }
-
proxy_http_version 1.1- Définit la version du protocole HTTP pour le proxy, par défaut, il est défini sur 1.0. Pour les connexions Web et les connexionskeepalive, vous devez utiliser la version 1.1.proxy_cache_bypass $http_upgrade- Définit les conditions dans lesquelles la réponse ne sera pas prise dans un cache.Upgrade $http_upgradeetConnection "upgrade"- Ces champs d'en-tête sont obligatoires si votre application utilise Websockets.Host $host- La variable$hostdans l'ordre de priorité suivant contient: nom d'hôte de la ligne de demande, ou nom d'hôte du champ d'en-tête de demande d'Host, ou le nom du serveur correspondant à une demande.X-Real-IP $remote_addr-X-Real-IP $remote_addrl'adresse IP distante du visiteur réel au serveur mandaté.X-Forwarded-For $proxy_add_x_forwarded_for- Une liste contenant les adresses IP de chaque serveur via lequel le client a été mandaté.X-Forwarded-Proto $scheme- Lorsqu'il est utilisé dans un bloc de serveur HTTPS, chaque réponse HTTP du serveur mandaté est réécrite enX-Forwarded-Host $host- Définit l'hôte d'origine demandé par le client.X-Forwarded-Port $server_port- Définit le port d'origine demandé par le client.
Conclusion
Vous avez appris à utiliser Nginx comme proxy inverse. Nous vous avons également montré comment transmettre des paramètres supplémentaires au serveur et modifier et définir différents champs d'en-tête dans les requêtes mandatées.
nginxLire les documents word 2013 en mode inversé pour économiser la batterie
Apprenez à lire des documents Word 2013 en mode inversé pour économiser la batterie dans les ordinateurs portables et les tablettes.
Économiser la batterie avec le mode inversé dans Android ics, Jelly Bean
Vous souhaitez économiser la batterie lorsque vous naviguez en ligne sur Android ICS ou Jelly Bean? Vous pouvez le faire en activant le mode de rendu inversé dans le navigateur stock.
Configurer odoo avec nginx comme proxy inverse
Odoo est livré avec un serveur Web intégré, mais dans la plupart des cas, il est recommandé d'avoir un proxy inverse devant lui qui servira d'intermédiaire entre les clients et le serveur Odoo. Ce guide fournit des instructions sur la façon d'utiliser Nginx comme proxy inverse d'Odoo.







