Nginx est l'un des meilleurs serveurs Web populaires aujourd'hui. Sa popularité est due au fait qu'il est très rapide et facile à mettre en place. L'autre côté de cette popularité - nginx est souvent la cible d'attaques malveillantes. Alors, si votre nginx n'est pas limité par les ressources disponibles, votre serveur peut totalement "tomber" lorsque nginx dépensé toutes les ressources système. C'est pourquoi vous devez contrôler et limiter les ressources Nginx consommé.
Toutes les limites sont définies dans nginx fichier de configuration. je vais le décrire sur Ubuntu 20.04 comme exemple. Toutes les modifications seront apportées dans / Etc /nginx/nginx.conf déposer. Chaque directive doit se terminer par un point-virgule. Je vais décrire le pa le plus importantrameters plus loin.
Les paramètres globaux
Ces paramètres affecteront l'ensemble du serveur. PennsylvanieramLa description des ètres est :
- connexions_travailleurs - cette option définit combien de connexions simultanées sont possibles pour un travailleur ("unité" spéciale qui communique entre nginx et noyau du système d'exploitation). Les travailleurs comptent cela dépend de combien CPU noyaux et RAM disponible sur votre serveur ;
- multi_accepter - cette directive permet aux travailleurs de gérer plusieurs processus simultanément. Il créera une file d'attente de processus, les tâches seront gérées une par une ;
- mutex_accept_delay - ce parameter définit un délai entre le redémarrage des tâches gérées ;
- utilisé - une méthode de traitement. Le meilleur ensemble pour Linux les serveurs sont epoll ;
- limite_conn - cette directive limitera les connexions. Il peut être défini à divers endroits, toutes les restrictions fonctionneront. Sur la capture d'écran ci-dessous, j'ai défini le nombre total de connexions sur 5 pour une adresse IP et 2 pour /Télécharger dossier:
Opérations de disque
Ces paramètres définissent comment nginx fonctionner avec lecteur de disque :
- envoyer le fichier sur - cette option permet au serveur web "d'échanger" des données de petits fichiers dans le noyau space, sans l'envoyer à l'application space. Cela fait nginx traitement des données beaucoup plus rapide ;
- ai sur - cette directive fournit des opérations de lecture/écriture multi-thread sur disque.
Compression et mise en cache
Vous pouvez mettre en cache certaines données à faire nginx plus rapide. La compression réduira le flux de trafic :
- gzip sur - cette option active la compression ;
- gzip_comp_level - niveau de compression. Un nombre plus élevé correspond à beaucoup de compression ;
- gzip_types - définir des types de fichiers à compresser. Par exemple, le texte est bon à compresser, mais les images ne l'est pas.
- open_file_cache - autoriser la mise en cache des fichiers ;
- open_file_cache_valid - temps de stockage du cache ;
- open_file_cache_errors - cette option permet de mettre en cache des erreurs comme "accès refusé". Il peut être utile d'empêcher une attaque massive par connexions simultanées ;
Les paramètres de sécurité
Vous pouvez restreindre l'accès des scrapers, des bots, des téléchargeurs, etc. Ajoutez simplement une construction comme ci-dessous à l'emplacement restreint :
if ($http_user_agent ~* LWP::curl|wget|*bot) {
return 403;
}
En outre, vous pouvez autoriser l'accès à certaines zones du site Web uniquement via des adresses IP définies. Il pourrait être utile de restreindre l'accès à la zone d'administration, par exemple :
location /admin/ {
## allow access from your IP
allow xxx.xxx.xxx.xxx/32;
## drop all other connections
deny all;
}
Conclusion
Dans cet article, j'ai décrit comment optimiser votre nginx fonctionne et a donné quelques conseils sur les améliorations de la sécurité de base.