Pour configurer Nginx en tant que serveur proxy inversé, vous devez configurer Nginx pour transférer les demandes du client à un serveur backend. Voici un guide étape par étape pour y parvenir:
Installez Nginx : si Nginx n'est pas déjà installé sur votre système, installez-le à l'aide du gestionnaire de package approprié pour votre système d'exploitation. Par exemple, sur Ubuntu, vous pouvez utiliser la commande suivante:
<code>sudo apt-get update sudo apt-get install nginx</code>
/etc/nginx/nginx.conf
ou dans le répertoire /etc/nginx/sites-available/
. Vous devrez créer ou modifier un fichier de configuration pour configurer le proxy inversé. Configurer le proxy inversé : dans le fichier de configuration, définissez un bloc de serveur qui agit comme le proxy inverse. Vous trouverez ci-dessous un exemple de configuration qui transfère les demandes d' example.com
à un serveur backend exécutant sur localhost:8080
:
<code>http { server { listen 80; server_name example.com; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } }</code>
proxy_pass
: spécifie l'adresse du serveur backend.proxy_set_header
: définit les en-têtes des demandes proxies pour s'assurer que le serveur backend reçoit des informations précises sur la demande d'origine.Tester et redémarrer Nginx : Après avoir apporté des modifications au fichier de configuration, il est crucial de tester la configuration des erreurs de syntaxe:
<code>sudo nginx -t</code>
Si le test réussit, redémarrez Nginx pour appliquer la nouvelle configuration:
<code>sudo systemctl restart nginx</code>
En suivant ces étapes, Nginx agira comme un proxy inversé, en transférant les demandes au serveur backend spécifié.
L'utilisation de Nginx comme proxy inversé offre plusieurs avantages:
Pour optimiser les performances de Nginx dans les configurations de proxy inverse, considérez les stratégies suivantes:
Activer la mise en cache : utilisez les capacités de mise en cache de Nginx pour stocker le contenu fréquemment accessible. Cela peut réduire considérablement la charge sur les serveurs backend et améliorer les temps de réponse.
<code>proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m; proxy_cache my_cache;</code>
Assurez les processus et les connexions des travailleurs : ajustez le nombre de processus et de connexions de travailleurs pour correspondre aux capacités et à la charge de votre serveur.
<code>worker_processes auto; events { worker_connections 1024; }</code>
Utilisez la compression GZIP : activer GZIP pour compresser les réponses, réduire l'utilisation de la bande passante et améliorer les temps de chargement de la page.
<code>gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml rss text/javascript;</code>
Optimiser la mise en mémoire tampon : configurer les tailles de tampon pour gérer plus efficacement les grandes demandes et les réponses.
<code>proxy_buffers 16 16k; proxy_buffer_size 32k;</code>
Implémentez la mise en commun des connexions : utilisez des connexions Keepalive pour réduire les frais généraux de l'établissement de nouvelles connexions.
<code>keepalive_timeout 65; keepalive_requests 100;</code>
Limitez l'utilisation des ressources : utilisez les fonctionnalités limitant les ressources de Nginx pour prévenir les abus et assurer une utilisation équitable des ressources du serveur.
<code>limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 10;</code>
En implémentant ces optimisations, vous pouvez améliorer les performances de votre configuration de proxy inverse Nginx.
La mise en œuvre de mesures de sécurité est cruciale lors de la configuration de Nginx comme proxy inverse. Considérez les pratiques suivantes:
SSL / TLS Encryption : Activez HTTPS en configurant les certificats SSL / TLS pour sécuriser les données dans Transit. Utilisez des outils comme Let's Crypt pour des certificats gratuits.
<code>server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; }</code>
HTTP STRICT TRANSFRANT SECURITY (HSTS) : appliquer les connexions HTTPS pour éviter les attaques de rétrogradation du protocole.
<code>add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;</code>
Limitation du taux : protéger contre les attaques de force brute et les DDOS en limitant le taux de demandes des adresses IP individuelles.
<code>limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; limit_req zone=one burst=5;</code>
En-têtes de sécurité : ajoutez des en-têtes pour améliorer la sécurité, tels que la politique de sécurité du contenu (CSP), les options X-Frame et la protection X-XSS.
<code>add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval';";</code>
Désactivez les jetons de serveur : masquez les informations de la version Nginx pour réduire la fuite d'informations.
<code>server_tokens off;</code>
Contrôle d'accès : restreignez l'accès à certaines parties de votre serveur en fonction des adresses IP ou d'autres critères.
<code>location /admin { allow 192.168.1.0/24; deny all; }</code>
En suivant ces pratiques de sécurité, vous pouvez améliorer considérablement la sécurité de votre configuration proxy inverse NGINX.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!