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
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 :
2. Décompressez le package d'installation :
3. Entrez le répertoire du package d'installation
4.
5. Voir la version pcre
3. Installez nginx
1. Téléchargez nginx, adresse de téléchargement :
2. Décompressez le package d'installation
3. Entrez le répertoire du package d'installation
4. Compilez et installez
5. Vérifiez la version de nginx
À ce stade, l'installation de nginx est terminée.
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 suivant
Vérifiez l'exactitude de la commande ngnix.conf du fichier de configuration :
5. Démarrez nginx
nginx La commande de démarrage est la suivante :
6. Accédez au site
Accédez à notre configuration IP du site depuis le navigateur :
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
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
Tirez la taille (proxy_bu ffers*2) rProxy_max_temp_file_size
proxy_temp_file_write_size 64k
proxy_pass, proxy_redirect voir la section localisation.
gzip activé : activez la sortie de compression gzip pour réduire la transmission réseau.
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
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. LocalisationDans 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
proxy_pass http:/backend
proxy_redirect off;
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 Autres5.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 :
Nous utilisons également couramment htpasswd de l'outil httpd-devel pour définir le mot de passe de connexion pour le chemin d'accès :
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 :
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
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
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!