le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Sito ufficiale di Nginx: http://nginx.org
Nginx è un server proxy inverso e HTTP gratuito, open source e ad alte prestazioni, un server proxy di posta elettronica e un server proxy TCP/UDP
Altre versioni secondarie di nginx:
Motore elettrico
Un progetto di server web avviato da Taobao. Basato su Nginx, aggiunge molte funzioni e caratteristiche avanzate per soddisfare le esigenze dei siti Web ad alto traffico. Le prestazioni e la stabilità di Tengine sono state ben testate su siti Web di grandi dimensioni come Taobao, Tmall Mall, ecc. Il suo obiettivo finale è creare una piattaforma Web efficiente, stabile, sicura e facile da usare.A partire dal dicembre 2011, Tengine è diventato un progetto open source
Sito ufficiale: http://tengine.taobao.org/
ApriResty
Piattaforma web ad alte prestazioni basata sul linguaggio Nginx e Lua
Sito ufficiale: http://openresty.org/cn/
Introduzione alla funzione Nginx
Server di risorse Web statico HTML, immagini, js, css, txt e altre risorse statiche
Proxy inverso per il protocollo http/https
Combinato con FastCGI/uWSGI/SCGI e altri protocolli per invertire le richieste di risorse dinamiche proxy
Richiesta di inoltro del protocollo tcp/udp (reverse proxy)
Proxy inverso per il protocollo imap4/pop3
Caratteristiche di base
Design modulare, buona scalabilità
Alta affidabilità
Supporta la distribuzione a caldo: aggiorna i file di configurazione, aggiorna le versioni e sostituisci i file di registro senza tempi di inattività
Basso consumo di memoria: 10.000 connessioni inattive in modalità di connessione keep-alive richiedono solo 2,5 MB di memoria
guidato dagli eventi,aio,mmap,sendfile
Funzioni relative ai servizi Web
Host virtuale (server)
Supporta connessioni keep-alive e pipeline (utilizzando una connessione per effettuare più richieste)
Registro di accesso (supporta il buffering del registro per migliorarne le prestazioni)
url riscritto
alias del percorso
Controllo degli accessi basato su IP e utente
Limite di velocità di supporto e limite di concorrenza
Riconfigurazione e aggiornamenti online senza interrompere i flussi di lavoro dei clienti
Struttura del processo Nginx
Nginx è un modello organizzativo multiprocesso ed è composto da un processo Master e da un processo Worker.
Funzioni del processo principale:
对外接口:接收外部的操作(信号)
对内转发:根据外部的操作的不同,通过信号管理 Worker
监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
读取Nginx 配置文件并验证其有效性和正确性
建立、绑定和关闭socket连接
按照配置生成、管理和结束工作进程
接受外界指令,比如重启、升级及退出服务器等指令
不中断服务,实现平滑升级,重启服务并应用新的配置
开启日志文件,获取文件描述符
不中断服务,实现平滑升级,升级失败进行回滚处理
编译和处理perl脚本
Funzioni del processo lavoratore:
所有 Worker 进程都是平等的
实际处理:网络请求,由 Worker 进程处理
Worker进程数量:一般设置为核心数,充分利用CPU资源,同时避免进程数量过多,导致进程竞争CPU资源,
增加上下文切换的损耗
接受处理客户的请求
将请求依次送入各个功能模块进行处理
I/O调用,获取响应数据
与后端服务器通信,接收后端服务器的处理结果
缓存数据,访问缓存索引,查询和调用缓存数据
发送请求结果,响应客户的请求
接收主程序指令,比如重启、升级和退出等
Introduzione al modulo Nginx
Modulo principale: è un modulo essenziale per il normale funzionamento del server Nginx. Fornisce funzioni principali come la registrazione degli errori, l'analisi dei file di configurazione, il meccanismo basato sugli eventi e la gestione dei processi.
Modulo HTTP standard: fornisce funzioni relative all'analisi del protocollo HTTP, come: configurazione della porta, impostazioni di codifica della pagina Web, impostazioni dell'intestazione della risposta HTTP, ecc.
Modulo HTTP opzionale: utilizzato principalmente per estendere le funzioni HTTP standard in modo che Nginx possa gestire alcuni servizi speciali, come: trasmissione multimediale Flash, analisi delle richieste GeoIP, compressione della trasmissione di rete, supporto del protocollo di sicurezza SSL, ecc.
Modulo del servizio di posta: utilizzato principalmente per supportare il servizio di posta Nginx, incluso il supporto per il protocollo POP3, il protocollo IMAP e il protocollo SMTP
Modulo del servizio di streaming: implementa la funzione proxy inverso, incluso il proxy del protocollo TCP
Modulo di terze parti: serve per estendere l'applicazione server Nginx e completare le funzioni definite dallo sviluppatore, come: supporto Json, supporto Lua, ecc.
Versione Nginx
La versione principale è la versione di sviluppo principale, solitamente un numero di versione dispari, come 1.19
La versione stabile è l'ultima versione stabile, solitamente una versione con numero pari, come: 1.20
Versioni legacy vecchie versioni stabili, solitamente versioni con numeri pari, come: 1.18
Nginx può essere installato utilizzando yum o il codice sorgente, ma si consiglia di utilizzare il codice sorgente per compilare e installare.
La versione di yum è più vecchia
La compilazione e l'installazione possono semplificare la personalizzazione dei percorsi correlati. L'uso della compilazione del codice sorgente può personalizzare le funzioni correlate, rendendolo più conveniente per l'uso aziendale.
Il contenitore Docker viene eseguito direttamente
[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 è scritto in linguaggio C, quindi l'installazione del codice sorgente Nginx richiede la preparazione anticipata di un compilatore standard. Il nome completo di GCC è (GNU Compiler collection). È sviluppato da GNU e concesso in licenza da GPL o LGPL -like, Apple Il compilatore standard per computer Mac OS Per altri linguaggi, è necessario anche lo strumento Automake per completare la creazione automatica di Makefile. Alcuni moduli di Nginx devono fare affidamento su librerie di terze parti, come: pcre (supporta la riscrittura ), zlib (supporta il modulo gzip) e openssl (supporta il modulo ssl), ecc.
Indirizzo di download del pacchetto del codice sorgente ufficiale: 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/