2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Site officiel de Nginx : http://nginx.org
Nginx est un serveur proxy HTTP et inverse, un serveur proxy de messagerie et un serveur proxy TCP/UDP gratuits, open source et hautes performances.
Autres versions secondaires de nginx :
Tengine
Un projet de serveur web initié par Taobao. Basé sur Nginx, il ajoute de nombreuses fonctions et fonctionnalités avancées pour répondre aux besoins des sites Web à fort trafic. Les performances et la stabilité de Tengine ont été bien testées sur de grands sites Web tels que Taobao, Tmall Mall, etc. Son objectif ultime est de créer une plateforme Web efficace, stable, sécurisée et facile à utiliser.Depuis décembre 2011, Tengine est devenu un projet open source
Site officiel : http://tengine.taobao.org/
OpenResty
Plateforme web performante basée sur les langages Nginx et Lua
Site officiel : http://openresty.org/cn/
Présentation de la fonction Nginx
Serveur de ressources Web statiques HTML, images, js, css, txt et autres ressources statiques
Proxy inverse pour le protocole http/https
Combiné avec FastCGI/uWSGI/SCGI et d'autres protocoles pour inverser les demandes de ressources dynamiques de proxy
Demande de transfert du protocole TCP/UDP (proxy inverse)
Proxy inverse pour le protocole imap4/pop3
Caractéristiques de base
Conception modulaire, bonne évolutivité
Grande fiabilité
Prise en charge du déploiement à chaud : mettre à jour les fichiers de configuration, mettre à niveau les versions et remplacer les fichiers journaux sans temps d'arrêt
Faible consommation de mémoire : 10 000 connexions inactives en mode de connexion persistante ne nécessitent que 2,5 Mo de mémoire
piloté par événement, aio, mmap, sendfile
Fonctions liées aux services Web
Hôte virtuel (serveur)
Prend en charge les connexions persistantes et pipeline (en utilisant une seule connexion pour effectuer plusieurs demandes)
Journal d'accès (prend en charge la mise en mémoire tampon des journaux pour améliorer ses performances)
réécriture d'URL
alias de chemin
Contrôle d'accès IP et basé sur l'utilisateur
Limite de débit de support et limite de concurrence
Reconfiguration et mises à niveau en ligne sans interrompre les flux de travail des clients
Structure du processus Nginx
Nginx est un modèle d'organisation multi-processus, composé d'un processus Master et d'un processus Worker.
Fonctions du processus maître :
对外接口:接收外部的操作(信号)
对内转发:根据外部的操作的不同,通过信号管理 Worker
监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
读取Nginx 配置文件并验证其有效性和正确性
建立、绑定和关闭socket连接
按照配置生成、管理和结束工作进程
接受外界指令,比如重启、升级及退出服务器等指令
不中断服务,实现平滑升级,重启服务并应用新的配置
开启日志文件,获取文件描述符
不中断服务,实现平滑升级,升级失败进行回滚处理
编译和处理perl脚本
Fonctions du processus de travail :
所有 Worker 进程都是平等的
实际处理:网络请求,由 Worker 进程处理
Worker进程数量:一般设置为核心数,充分利用CPU资源,同时避免进程数量过多,导致进程竞争CPU资源,
增加上下文切换的损耗
接受处理客户的请求
将请求依次送入各个功能模块进行处理
I/O调用,获取响应数据
与后端服务器通信,接收后端服务器的处理结果
缓存数据,访问缓存索引,查询和调用缓存数据
发送请求结果,响应客户的请求
接收主程序指令,比如重启、升级和退出等
Présentation du module Nginx
Module principal : il s'agit d'un module essentiel au fonctionnement normal du serveur Nginx. Il fournit des fonctions de base telles que la journalisation des erreurs, l'analyse des fichiers de configuration, le mécanisme piloté par les événements et la gestion des processus.
Module HTTP standard : fournit des fonctions liées à l'analyse du protocole HTTP, telles que : la configuration du port, les paramètres d'encodage des pages Web, les paramètres d'en-tête de réponse HTTP, etc.
Module HTTP facultatif : principalement utilisé pour étendre les fonctions HTTP standard afin que Nginx puisse gérer certains services spéciaux, tels que : la transmission multimédia Flash, l'analyse des requêtes GeoIP, la compression de la transmission réseau, la prise en charge du protocole de sécurité SSL, etc.
Module de service de messagerie : principalement utilisé pour prendre en charge le service de messagerie Nginx, y compris la prise en charge du protocole POP3, du protocole IMAP et du protocole SMTP.
Module de service Stream : implémente la fonction de proxy inverse, y compris le proxy du protocole TCP
Module tiers : consiste à étendre l'application serveur Nginx et à compléter les fonctions définies par le développeur, telles que : le support Json, le support Lua, etc.
Version Nginx
La version principale est la version de développement principale, généralement un numéro de version impair, tel que 1.19.
La version stable est la dernière version stable, généralement une version paire, telle que : 1.20
Versions héritées anciennes versions stables, généralement des versions paires, telles que : 1.18
Nginx peut être installé à l'aide de yum ou du code source, mais il est recommandé d'utiliser le code source pour compiler et installer.
La version de yum est plus ancienne
La compilation et l'installation peuvent faciliter la personnalisation des chemins associés. L'utilisation de la compilation du code source peut personnaliser les fonctions associées, ce qui les rend plus pratiques pour une utilisation professionnelle.
Le conteneur Docker s'exécute directement
[root@Rocky8 ~]#vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[root@Rocky8 ~]#yum -y install nginx
[root@Rocky8 ~]#rpm -q nginx
nginx-1.26.1-2.el8.ngx.x86_64
Nginx est écrit en langage C, donc l'installation du code source de Nginx nécessite la préparation d'un compilateur standard à l'avance. Le nom complet de GCC est (GNU Compiler collection). Il est développé par GNU et sous licence GPL ou LGPL. -like, Apple Le compilateur standard pour l'ordinateur Mac OS Pour d'autres langages, l'outil Automake est également nécessaire pour compléter la création automatique de Makefile. Certains modules de Nginx doivent s'appuyer sur des bibliothèques tierces, telles que : pcre (prend en charge la réécriture). ), zlib (prend en charge le module gzip) et openssl (prend en charge le module ssl), etc.
Adresse officielle de téléchargement du package de code source : https://nginx.org/en/download.html
# 安装依赖包
[root@Ubuntu2204 ~]#apt update
[root@Ubuntu2204 ~]#apt -y install gcc make libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev
[root@Ubuntu2204 ~]#useradd -r -s /sbin/nologin nginx
[root@Ubuntu2204 ~]#cd /usr/local/src/
[root@Ubuntu2204 src]#wget https://nginx.org/download/nginx-1.22.1.tar.gz
[root@Ubuntu2204 src]#tar xf nginx-1.22.1.tar.gz
[root@Ubuntu2204 src]#cd nginx-1.22.1/
[root@Ubuntu2204 nginx-1.22.1]#./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
[root@Ubuntu2204 nginx-1.22.1]#make && make install
[root@Ubuntu2204 nginx-1.22.1]#chown -R nginx.nginx /apps/nginx
[root@Ubuntu2204 nginx-1.22.1]#ln -s /apps/nginx/sbin/nginx /usr/sbin/
# 启动nginx
[root@Ubuntu2204 nginx-1.22.1]#cd
[root@Ubuntu2204 ~]#nginx
[root@Ubuntu2204 ~]#ss -nlt
# 关闭nginx
[root@Ubuntu2204 ~]#nginx -s stop
[root@Ubuntu2204 ~]#ss -nlt
# 创建 Nginx 自启动文件
复制同一版本的nginx的yum安装生成的service文件
[root@Ubuntu2204 ~]#vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/run/nginx.pid
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
# 创建pid文件存放的目录
[root@Ubuntu2204 ~]#mkdir /apps/nginx/run/
# 修改配置文件
[root@Ubuntu2204 ~]#vim /apps/nginx/conf/nginx.conf
pid /apps/nginx/run/nginx.pid;
# 验证 Nginx 自启动文件
[root@Ubuntu2204 ~]#systemctl daemon-reload
[root@Ubuntu2204 ~]#systemctl enable --now nginx.service
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /lib/systemd/system/nginx.service.
[root@Ubuntu2204 ~]#ll /apps/nginx/run/
-rw-r--r-- 1 root root 6 Jul 11 09:45 nginx.pid
[root@Ubuntu2204 ~]#ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
[root@Ubuntu2204 ~]#systemctl stop nginx.service
[root@Ubuntu2204 ~]#systemctl status nginx.service
[root@Ubuntu2204 ~]#ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
# 验证 Nginx 自启动
[root@Ubuntu2204 ~]#reboot
[root@Ubuntu2204 ~]#ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
[root@Ubuntu2204 ~]#systemctl status nginx.service
● nginx.service - nginx - high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-07-11 09:48:58 CST; 1min 5s ago
Docs: https://nginx.org/en/docs/