Maison  >  Article  >  Opération et maintenance  >  Déploiement et maintenance sécurisés de Nginx dans un environnement cloud

Déploiement et maintenance sécurisés de Nginx dans un environnement cloud

WBOY
WBOYoriginal
2023-06-09 21:39:091496parcourir

Avec le développement du cloud computing, de plus en plus d'applications et de services sont déployés dans des environnements cloud. En tant que serveur Web hautes performances et serveur proxy inverse, Nginx devient de plus en plus populaire dans les environnements cloud. Cet article présentera le déploiement et la maintenance sécurisés de Nginx dans un environnement cloud.

1. Configuration de la sécurité Nginx

Dans l'environnement cloud, le serveur est confronté à une surface d'attaque plus large, la configuration de la sécurité est donc particulièrement importante. Voici quelques configurations de sécurité Nginx courantes.

1. Prévenir les attaques DDoS

Les attaques DDoS sont une attaque réseau courante et peuvent être évitées à l'aide des modules limit_conn et limit_req de Nginx. Parmi eux, limit_conn peut contrôler le nombre de connexions et limit_req peut contrôler le taux de requêtes. La configuration de ces deux modules est la suivante :

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m; 
    limit_conn addr 10; # 对每个IP地址限制10个连接数 
    
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 
    limit_req zone=one burst=5 nodelay;
    # 每秒只允许处理1个请求,最多允许5个请求在等待队列中等待
}

2. Désactivez les méthodes HTTP non sécurisées

Certaines méthodes de requête HTTP sont moins sécurisées, comme DELETE, TRACE, CONNECT, etc. Vous pouvez utiliser la directive limit_sauf de Nginx pour limiter l'utilisation de méthodes HTTP non sécurisées, comme indiqué ci-dessous :

location / {
    limit_except GET POST {
        deny all;
    }
}

3 Interdire les fuites d'informations sur le serveur

Un attaquant peut localiser les vulnérabilités et les faiblesses du serveur en obtenant des informations sur le serveur, il est donc également interdit d'interdire les fuites d'informations sur le serveur. une bonne idée de configuration de sécurité importante. Vous pouvez utiliser la directive server_tokens de Nginx pour contrôler l'affichage ou non des informations sur le serveur dans l'en-tête de réponse HTTP, comme indiqué ci-dessous :

http {
    server_tokens off; # 禁止在HTTP响应头中显示服务器信息
}

2. Optimisation des performances de Nginx

Les applications Web dans les environnements cloud doivent généralement gérer un grand nombre de requêtes simultanées, donc l'optimisation des performances est également une priorité. Voici quelques méthodes courantes d’optimisation des performances de Nginx.

1. Activez la mise en cache

Pour certaines ressources statiques, telles que les images, CSS, JS, etc., vous pouvez utiliser le cache de Nginx pour améliorer la vitesse d'accès. Vous pouvez définir le chemin du cache et la taille du cache via la directive proxy_cache_path de Nginx, comme indiqué ci-dessous :

http {
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
    
    server {
        location /assets/ {
            proxy_cache my_cache;
            proxy_pass http://backend/;
        }
    }
}

2. Utiliser la compression Gzip

La compression Gzip peut réduire la quantité de données transmises sur le réseau et améliorer la vitesse d'accès du site Web. La compression Gzip peut être activée à l'aide de la commande gzip de Nginx, comme indiqué ci-dessous :

http {
    gzip on;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}

3. Configurez l'algorithme de planification

Lorsque Nginx est utilisé comme équilibreur de charge, la configuration de l'algorithme de planification est également une tâche importante. Nginx fournit une variété d'algorithmes de planification, tels que Round Robin, Least Connections, IP Hash, etc. Vous pouvez utiliser le bloc en amont de Nginx pour configurer l'algorithme de planification, comme indiqué ci-dessous :

http {
    upstream backend {
        server backend1;
        server backend2;
        
        # 使用IP Hash调度算法
        ip_hash;
    }
}

3. Gestion des journaux Nginx

Dans un environnement cloud, la gestion des journaux est également très importante. Nginx fournit une variété d'options de journalisation, notamment access_log, error_log, etc. Vous pouvez utiliser ces options de journalisation pour enregistrer l'accès au serveur, les messages d'erreur, etc. Voici quelques options de journalisation couramment utilisées.

1.access_log

access_log est une option de journal qui enregistre l'état d'accès de chaque demande. Vous pouvez utiliser la directive access_log de Nginx pour activer la journalisation des accès, comme indiqué ci-dessous :

http {
    access_log /var/log/nginx/access.log;
}

2.error_log

error_log est une option de journalisation pour enregistrer les informations d'erreur. Vous pouvez utiliser la commande error_log de Nginx pour activer la journalisation des erreurs, comme indiqué ci-dessous :

http {
    error_log /var/log/nginx/error.log;
}

3. Coupe du journal

Lorsque le fichier journal est trop volumineux, vous pouvez utiliser la fonction de coupe du journal de Nginx pour diviser le fichier journal pour une gestion facile. Vous pouvez utiliser l'outil logrotate pour couper régulièrement les fichiers journaux, comme indiqué ci-dessous :

/var/log/nginx/*.log {
    daily
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 0640 nginx root
    sharedscripts
    postrotate
        /usr/sbin/nginx -s reopen
    endscript
}

Ce qui précède est une introduction aux méthodes de déploiement et de maintenance sécurisées de Nginx dans un environnement cloud. Bien entendu, il existe de nombreuses autres méthodes de configuration de la sécurité, d'optimisation des performances et de gestion des journaux, qui doivent être configurées et optimisées en fonction de la situation réelle. J'espère que cet article pourra être utile à tout le monde.

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