Maison  >  Article  >  Opération et maintenance  >  Exemple d'analyse de démarrage rapide Nginx

Exemple d'analyse de démarrage rapide Nginx

WBOY
WBOYavant
2023-05-14 12:19:20856parcourir

Pourquoi utiliser nginx ?

À l'heure actuelle, le principal concurrent de nginx est Apache. Je vais faire ici une comparaison simple entre les deux pour aider tout le monde à mieux comprendre les avantages de nginx.

1. En tant que serveur Web :

Par rapport à Apache, nginx utilise moins de ressources, prend en charge davantage de connexions simultanées et reflète une efficacité plus élevée. Cela rend nginx particulièrement populaire auprès des fournisseurs d'hébergement virtuel. Dans le cas d'une forte concurrence de connexions, nginx est une bonne alternative au serveur Apache : nginx est l'une des plateformes logicielles souvent choisies par les patrons du secteur de l'hébergement virtuel aux États-Unis. Elle peut prendre en charge des réponses allant jusqu'à 50 000 connexions simultanées. Merci à nginx pour Nous avons choisi epoll et kqueue comme modèle de développement.

nginx en tant que serveur d'équilibrage de charge : nginx peut prendre en charge directement les programmes Rails et PHP en interne pour fournir des services externes, ou il peut prendre en charge des services externes en tant que serveur proxy http. nginx est écrit en C, et sa surcharge de ressources système et son efficacité d'utilisation du processeur sont bien meilleures que celles de Perlbal.

2. La configuration de nginx est simple, Apache est complexe :

nginx est particulièrement facile à démarrer, et peut fonctionner presque 7*24 sans interruption Même s'il fonctionne pendant plusieurs mois, il n'a pas besoin d'être redémarré. Vous pouvez également bénéficier d'un service ininterrompu. Dans ce cas, la version du logiciel peut être mise à niveau.

Les performances de traitement statique de nginx sont plus de 3 fois supérieures à celles d'Apache. La prise en charge de php par Apache est relativement simple et doit être utilisée avec d'autres backends. Apache a plus de composants que nginx.

3. La différence fondamentale est la suivante :

Apache est un modèle multi-processus synchrone, une connexion correspond à un processus ; nginx est asynchrone, plusieurs connexions (10 000 niveaux) peuvent correspondre à un processus.

4. Les domaines d'expertise des deux sont :

L'avantage de nginx est de gérer les requêtes statiques, avec une faible utilisation de la mémoire CPU, et Apache est adapté au traitement des requêtes dynamiques, donc maintenant le front-end utilise généralement nginx comme un proxy inverse pour résister à la pression. Apache sert de backend pour gérer les requêtes dynamiques.

Utilisation de base de nginx

Plateforme système : version centos 6.6 (finale) 64 bits.

1. Installez les outils de compilation et les fichiers de bibliothèque

Exemple danalyse de démarrage rapide Nginx

2. Tout d'abord, installez pcre

1. La fonction de pcre est d'activer nginx pour prendre en charge la fonction de réécriture. Téléchargez le package d'installation pcre, adresse de téléchargement :

Exemple danalyse de démarrage rapide Nginx

Exemple danalyse de démarrage rapide Nginx

2. Décompressez le package d'installation :

Exemple danalyse de démarrage rapide Nginx

3. Entrez le répertoire du package d'installation

Exemple danalyse de démarrage rapide Nginx

4.

5. Voir la version pcre Exemple danalyse de démarrage rapide Nginx

Exemple danalyse de démarrage rapide Nginx

Exemple danalyse de démarrage rapide Nginx 3. Installez nginx

1. Téléchargez nginx, adresse de téléchargement :

Exemple danalyse de démarrage rapide Nginx

2. Décompressez le package d'installation Exemple danalyse de démarrage rapide Nginx

3. Entrez le répertoire du package d'installation Exemple danalyse de démarrage rapide Nginx

4. Compilez et installez Exemple danalyse de démarrage rapide Nginx

5. Vérifiez la version de nginx Exemple danalyse de démarrage rapide Nginx

Exemple danalyse de démarrage rapide Nginx

À ce stade, l'installation de nginx est terminée. Exemple danalyse de démarrage rapide Nginx

4. Configuration de nginx

Créez l'utilisateur www pour exécuter nginx :

Configurez nginx.conf et remplacez /usr/local/webserver/nginx/conf/nginx.conf par le contenu suivantExemple danalyse de démarrage rapide Nginx

Vérifiez l'exactitude de la commande ngnix.conf du fichier de configuration : Exemple danalyse de démarrage rapide Nginx

Exemple danalyse de démarrage rapide Nginx

Exemple danalyse de démarrage rapide Nginx

5. Démarrez nginx

nginx La commande de démarrage est la suivante :

Exemple danalyse de démarrage rapide Nginx

Exemple danalyse de démarrage rapide Nginx

6. Accédez au site

Accédez à notre configuration IP du site depuis le navigateur :

Exemple danalyse de démarrage rapide Nginx

nginx Common Instructions Description

1. configuration globale principale

nginx certains paramètres qui n'ont rien à voir avec des fonctions métier spécifiques (telles que le service http ou le proxy du service de messagerie) lors de l'exécution, comme le numéro des processus de travail, de l'identité de fonctionnement, etc.

woker_processes 2
Dans la section principale de niveau supérieur du fichier de configuration, le nombre de processus de travail du rôle de travail, le processus maître reçoit et attribue les demandes aux travailleurs pour traitement. Cette valeur peut être simplement définie sur le nombre de cœurs du CPU grep ^processor /proc/cpuinfo wc -l, qui est également la valeur automatique Si SSL et gzip sont activés, elle doit être définie sur la même valeur, voire même. deux fois le nombre de processeurs logiques, ce qui peut réduire les opérations d'E/S. Si le serveur nginx dispose d'autres services, vous pouvez envisager de les réduire de manière appropriée.

worker_cpu_affinity
est également écrit dans la partie principale. Dans les situations de concurrence élevée, la perte de performances causée par la reconstruction sur site des registres et d'autres registres provoquée par la commutation de plusieurs cœurs de processeur est réduite en définissant la rigidité du processeur. Tel que work_cpu_affinity 0001 0010 0100 1000 (quad-core).

worker_connections 2048
est écrit dans la section événements. Nombre maximum de connexions que chaque processus de travail peut gérer (initier) simultanément (y compris le nombre de connexions avec des clients ou des serveurs proxy principaux). En tant que serveur proxy inverse, nginx a une formule de calcul : nombre maximum de connexions = work_processes * work_connections/4, donc le nombre maximum de connexions client ici est de 1024. Peu importe si cela peut être augmenté à 8192, en fonction du situation, mais il ne peut pas dépasser le work_rlimit_nofile suivant. Lorsque nginx est utilisé comme serveur http, la formule de calcul est divisée par 2.

worker_rlimit_nofile 10240
est écrit dans la partie principale. La valeur par défaut n'est aucun paramètre et peut être limitée à la limite maximale du système d'exploitation de 65 535.

utilisez epoll
écrit dans la section événements. Sous le système d'exploitation Linux, nginx utilise par défaut le modèle d'événement epoll. Grâce à cela, nginx est assez efficace sous le système d'exploitation Linux. Dans le même temps, nginx utilise un modèle d'événement efficace, kqueue, similaire à epoll sur le système d'exploitation openbsd ou freebsd. Utilisez select uniquement lorsque le système d’exploitation ne prend pas en charge ces modèles efficaces.

2. Serveur http

Quelques paramètres de configuration liés à la fourniture des services http. Par exemple : s'il faut utiliser keepalive, s'il faut utiliser gzip pour la compression, etc.

sendfile on
active un mode de transfert de fichiers efficace. L'instruction sendfile spécifie si nginx appelle la fonction sendfile pour générer des fichiers, réduisant ainsi le basculement de contexte de l'espace utilisateur à l'espace noyau. Activez-le pour les applications ordinaires. S'il est utilisé pour des applications à forte charge d'E/S disque telles que le téléchargement, il peut être désactivé pour équilibrer la vitesse de traitement des E/S du disque et du réseau et réduire la charge du système.

keepalive_timeout 65  : Délai d'expiration de connexion long, en secondes. Ce paramètre est très sensible et implique le type de navigateur, le paramètre de délai d'attente du serveur back-end et le paramètre du système d'exploitation. Vous pouvez écrire un autre article. Lorsqu'une longue connexion demande un grand nombre de petits fichiers, cela peut réduire le coût de rétablissement de la connexion. Cependant, si un fichier volumineux est téléchargé, l'échec du téléchargement dans les 65 secondes entraînera un échec. Si le temps de configuration est trop long et qu'il y a de nombreux utilisateurs, maintenir la connexion pendant une longue période consommera beaucoup de ressources.

send_timeout : Utilisé pour spécifier le délai d'attente pour répondre au client. Ce timeout est limité au temps entre deux activités de connexion. Si ce délai est dépassé sans aucune activité sur le client, nginx fermera la connexion.

client_max_body_size 10m
Le nombre maximum d'octets d'un seul fichier pouvant être demandé par le client. Si vous téléchargez un fichier plus volumineux, veuillez définir sa valeur limite

client_body_buffer_size 128k
Le nombre maximum d'octets pendant lesquels le proxy tampon met en mémoire tampon la demande du client

Module http_proxy:

Ce module implémente nginx en tant que serveur proxy inverse Fonctions, incluant la fonction de mise en cache (voir aussi l'article)

proxy_connect_timeout 60
timeout de connexion nginx avec le serveur backend (timeout de connexion proxy)

proxy_read_timeout 60
Après une connexion réussie, entre deux opérations de réponse réussies avec le serveur backend Timeout (timeout de réception proxy)

proxy_buffer_size 4k
Définissez la taille du tampon pour le serveur proxy (nginx) pour lire et enregistrer les informations d'en-tête utilisateur à partir du serveur réel back-end. La valeur par défaut est la même que proxy_buffers. En fait, vous pouvez définir une valeur de commande plus petite

.BProxy_buffers 4 32K

proxy_buffers buffer, réponse Nginx du back-end RealServer pour un cache de connexion unique, la page Web est inférieure à 32K, de sorte que le

Proxy_busy_Size 64K


Tirez la taille (proxy_bu ffers*2) rProxy_max_temp_file_size

Lorsque proxy_buffers ne peut pas s'adapter le contenu de la réponse du serveur back-end, il en enregistrera une partie dans un fichier temporaire sur le disque dur. Cette valeur est utilisée pour définir la taille maximale du fichier temporaire. La valeur par défaut est de 1024 mo. Cela n'a rien à voir avec proxy_cache. Les valeurs supérieures à cela seront renvoyées par le serveur en amont. Réglez sur 0 pour désactiver.


proxy_temp_file_write_size 64k

Lorsque le cache est mandaté par le serveur pour répondre aux fichiers temporaires, cette option limite la taille du fichier temporaire écrit à chaque fois. proxy_temp_path (peut être spécifié lors de la compilation) dans quel répertoire écrire.


proxy_pass, proxy_redirect voir la section localisation.

Module http_gzip :

gzip activé : activez la sortie de compression gzip pour réduire la transmission réseau.

    gzip_min_length 1k : Définissez le nombre minimum d'octets de la page qui peuvent être compressés. Le nombre d'octets de la page est obtenu à partir de la longueur du contenu de l'en-tête. La valeur par défaut est 20. Il est recommandé de définir le nombre d'octets sur une valeur supérieure à 1 Ko. S'il est inférieur à 1 Ko, il peut être de plus en plus compressé.
  1. gzip_buffers 4 16k : configurez le système pour obtenir plusieurs unités de cache pour stocker le flux de données des résultats de la compression gzip. 4 16 Ko signifie demander de la mémoire en unités de 16 Ko, soit 4 fois la taille des données d'origine à installer en unités de 16 Ko.
  2. gzip_http_version 1.0 : Utilisé pour identifier la version du protocole http. Les premiers navigateurs ne prenaient pas en charge la compression gzip et les utilisateurs verraient des caractères tronqués. Par conséquent, cette option a été ajoutée pour prendre en charge les versions antérieures si vous utilisez nginx reverse. souhaitez utiliser un proxy et également activer la compression gzip, veuillez le définir sur 1.0 puisque la communication finale est http/1.0.
  3. gzip_comp_level 6 : taux de compression gzip, 1 a le taux de compression le plus petit et la vitesse de traitement la plus rapide, 9 a le taux de compression le plus élevé mais la vitesse de traitement la plus lente (transmission rapide mais consomme plus de CPU)
  4. gzip_types : correspond au type MIME pour la compression, qu'il soit spécifié ou non, le type "text/html" sera toujours compressé.
  5. gzip_proxied any : activé lorsque nginx est utilisé comme proxy inverse, il détermine s'il faut activer ou désactiver la compression des résultats renvoyés par le serveur back-end. Le principe de la correspondance est que le serveur back-end doit renvoyer un. en-tête contenant "via".
  6. gzip_vary on : Il est lié à l'en-tête http. Il ajoutera variant: accept-encoding à l'en-tête de réponse, ce qui permet au serveur de cache frontal de mettre en cache les pages compressées par gzip. Par exemple, utilisez Squid pour mettre en cache. Données compressées avec nginx.
3. hôte virtuel du serveur

Le service http prend en charge plusieurs hôtes virtuels. Chaque hôte virtuel possède un élément de configuration de serveur correspondant, qui contient la configuration relative à l'hôte virtuel. Lorsque vous fournissez un proxy pour les services de messagerie, vous pouvez également créer plusieurs serveurs. Chaque serveur se distingue par son adresse d'écoute ou son port.

écouter

Le port d'écoute est 80 par défaut. S'il est inférieur à 1024, il faut le démarrer en tant que root. Cela peut prendre la forme d'écoute *:80, d'écoute 127.0.0.1:80, etc.


server_name

Le nom du serveur, tel que localhost, www.example.com, peut être mis en correspondance par des expressions régulières.


Module http_stream

Ce module utilise un algorithme de planification simple pour réaliser l'équilibrage de charge de l'IP du client vers le serveur backend. L'amont est suivi du nom de l'équilibreur de charge, et le serveur réel backend est organisé en {} sous la forme de. hôte: options de port ; milieu. Si un seul backend est proxy, vous pouvez également l'écrire directement dans proxy_pass.

4. Localisation

Dans le service http, il existe une série d'éléments de configuration correspondant à certaines URL spécifiques.

root /var/www/html

Définit l'emplacement racine du site Web par défaut du serveur. Si locationurl correspond à un sous-répertoire ou à un fichier, root n'a aucun effet et est généralement placé dans la directive du serveur ou sous /.


index index.jsp index.html index.htm

définir le nom du fichier accessible par défaut sous le chemin, généralement suivi de root


proxy_pass http:/backend

La requête est dirigée vers la liste de serveurs définie par le backend, c'est-à-dire , le proxy inverse, correspondant à l'égaliseur de charge amont. Vous pouvez également proxy_pass http://ip:port.


proxy_redirect off;

proxy_set_header host $host;

proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;


Ces quatre sont configurés comme ça pour le moment Si vous creusez plus profondément. , chacun est impliqué. Un contenu très complexe sera également expliqué dans un autre article.

Concernant l'écriture des règles de correspondance d'emplacement, cela peut être considéré comme particulièrement critique et basique. Veuillez vous référer à l'article Résumé de l'emplacement de configuration de nginx et réécrire l'écriture des règles

5 Autres

5.1 Autorisation du contrôle d'accès/. refuser l'accès à

nginx Le module de contrôle sera installé par défaut et la méthode d'écriture est également très simple. Vous pouvez avoir plusieurs autorisations et refus pour autoriser ou interdire l'accès à une certaine IP ou un certain segment IP. tournez, la correspondance s'arrêtera. Par exemple :

Exemple danalyse de démarrage rapide NginxNous utilisons également couramment htpasswd de l'outil httpd-devel pour définir le mot de passe de connexion pour le chemin d'accès :

Exemple danalyse de démarrage rapide Nginx

Cela génère un fichier de mot de passe crypté par crypt par défaut. Ouvrez les deux lignes de commentaires dans nginx-status ci-dessus et redémarrez nginx pour prendre effet.

5.2 Lister l'autoindexation du répertoire

nginx n'autorise pas la liste de l'intégralité du répertoire par défaut. Si vous avez besoin de cette fonction, ouvrez le fichier nginx.conf et ajoutez autoindex on; dans la section location, server ou http. Il est préférable d'ajouter les deux autres paramètres :

  1. autoindex_exact_size off; la taille exacte du fichier, l'unité est en octets. Après avoir désactivé, la taille approximative du fichier est affichée, l'unité est ko ou mb ou gb autoindex_localtime on

  2. La valeur par défaut est désactivée et l'heure du fichier affichée est l'heure gmt. Après avoir activé, l'heure du fichier affichée est l'heure du serveur du fichier

Exemple danalyse de démarrage rapide 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer