Maison  >  Article  >  Opération et maintenance  >  Explication détaillée de la configuration de la sécurité et des stratégies de protection du serveur Nginx

Explication détaillée de la configuration de la sécurité et des stratégies de protection du serveur Nginx

WBOY
WBOYoriginal
2023-08-04 18:25:452589parcourir

Explication détaillée de la configuration de sécurité et des stratégies de protection du serveur Nginx

Aperçu :
Avec le développement d'Internet et l'avènement de l'ère du big data, la sécurité des serveurs Web fait l'objet de plus en plus d'attention. Parmi les nombreux serveurs Web, Nginx est populaire pour ses avantages tels que des performances élevées, des capacités de traitement hautement simultanées et une conception modulaire flexible. Cet article présentera en détail la configuration de la sécurité et les stratégies de protection du serveur Nginx, notamment le contrôle d'accès, le proxy inverse, la limitation de flux et la configuration HTTPS, etc.

1. Contrôle d'accès

  1. Liste noire et liste blanche IP : en configurant les instructions d'autorisation et de refus de Nginx, vous pouvez définir la liste noire et la liste blanche IP. Dans le fichier de configuration Nginx, vous pouvez utiliser l'exemple de code suivant :
http {
    server {
        location / {
            deny 192.168.1.1;
            allow all;
        }
    }
}

Dans la configuration ci-dessus, l'accès avec l'IP 192.168.1.1 est refusé et les autres IP sont accessibles normalement.

  1. Prévenir les requêtes malveillantes : en définissant une limite sur le nombre de connexions et en limitant la fréquence d'accès, vous pouvez empêcher les attaques de requêtes malveillantes. Ceci peut être réalisé en utilisant les directives limit_conn et limit_req dans le fichier de configuration Nginx, comme indiqué ci-dessous :
http {
    server {
        location / {
            limit_conn conn_limit_per_ip 10;
            limit_req zone=req_limit_per_ip burst=20 nodelay;
        }
    }
}

Dans la configuration ci-dessus, le nombre de connexions simultanées par IP est limité à 10 et la fréquence des requêtes par IP est limitée à 20 par seconde.

2. Proxy inverse

  1. Masquer la vraie IP : utilisez le proxy inverse pour masquer la vraie IP et protéger la sécurité du serveur. Vous pouvez utiliser le code de configuration suivant :
http {
    server {
        location / {
            proxy_pass http://backend;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }
}

Dans la configuration ci-dessus, la requête sera envoyée à backend1.example.com et backend2.example.com, et la véritable IP de la requête d'origine sera définie dans l'en-tête HTTP. .

  1. Équilibrage de charge : grâce au proxy inverse et à l'équilibrage de charge, les requêtes peuvent être distribuées sur plusieurs serveurs backend pour améliorer les performances et la fiabilité du système. Vous pouvez utiliser le code de configuration suivant :
http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }
    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

Dans la configuration ci-dessus, les requêtes seront envoyées aux serveurs de backend1.example.com et backend2.example.com de manière égale.

3. Limitation actuelle

  1. Contrôlez le taux d'accès : en configurant l'instruction limit_req de Nginx, vous pouvez limiter le taux d'accès de chaque IP pour éviter d'être attaqué par des requêtes malveillantes. Vous pouvez utiliser le code de configuration suivant :
http {
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
    server {
        location / {
            limit_req zone=req_limit_per_ip burst=20 nodelay;
        }
    }
}

Dans la configuration ci-dessus, le débit d'accès de chaque IP est limité à 10 fois par seconde et le nombre de rafales de requêtes est fixé à 20.

  1. Limiter la taille du téléchargement de fichiers : en configurant la directive client_max_body_size de Nginx, vous pouvez limiter la taille des téléchargements de fichiers pour éviter que le téléchargement de fichiers volumineux n'occupe les ressources du serveur. Vous pouvez utiliser le code de configuration suivant :
http {
    server {
        client_max_body_size 10m;
        ...
    }
}

Dans la configuration ci-dessus, la taille du téléchargement de fichier est limitée à 10 Mo.

4. Configuration HTTPS

  1. Générer un certificat SSL : Vous pouvez utiliser des outils tels que Let's Encrypt pour générer des certificats SSL afin d'assurer la sécurité des connexions HTTPS.
  2. Configurer la connexion HTTPS : Vous pouvez utiliser le code de configuration suivant pour convertir une connexion HTTP en connexion HTTPS :
server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}
server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/ssl_certificate.pem;
    ssl_certificate_key /path/to/ssl_certificate_key.pem;
    ...
}

Dans la configuration ci-dessus, redirigez la connexion HTTP vers une connexion HTTPS et configurez le certificat SSL et la clé privée.

Résumé :
Cet article présente la configuration de la sécurité et la stratégie de protection du serveur Nginx, y compris le contrôle d'accès, le proxy inverse, la limitation de flux et la configuration HTTPS, etc. En configurant et en utilisant correctement ces politiques, la sécurité des serveurs et des sites Web peut être améliorée et la sécurité des données des systèmes et des utilisateurs peut être protégée. Cependant, il convient de noter que différents environnements et besoins peuvent nécessiter des configurations ciblées, et que les développeurs doivent effectuer des sélections et des ajustements en fonction des conditions réelles.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn