2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Offizielle Nginx-Website: http://nginx.org
Nginx ist ein kostenloser, Open-Source-Hochleistungs-HTTP- und Reverse-Proxy-Server, E-Mail-Proxy-Server und TCP/UDP-Proxy-Server
Andere sekundäre Versionen von Nginx:
Tengine
Ein von Taobao initiiertes Webserverprojekt. Basierend auf Nginx fügt es viele erweiterte Funktionen und Features hinzu, um den Anforderungen stark frequentierter Websites gerecht zu werden. Die Leistung und Stabilität von Tengine wurden auf großen Websites wie Taobao, Tmall Mall usw. gut getestet. Das oberste Ziel besteht darin, eine effiziente, stabile, sichere und benutzerfreundliche Webplattform zu schaffen.Ab Dezember 2011 wurde Tengine ein Open-Source-Projekt
Offizielle Website: http://tengine.taobao.org/
OpenResty
Hochleistungs-Webplattform basierend auf der Nginx- und Lua-Sprache
Offizielle Website: http://openresty.org/cn/
Einführung in die Nginx-Funktion
Statischer Webressourcenserver HTML, Bilder, JS, CSS, TXT und andere statische Ressourcen
Reverse-Proxy für das http/https-Protokoll
Kombiniert mit FastCGI/uWSGI/SCGI und anderen Protokollen, um dynamische Proxy-Ressourcenanforderungen umzukehren
Anforderungsweiterleitung des TCP/UDP-Protokolls (Reverse-Proxy)
Reverse-Proxy für das imap4/pop3-Protokoll
Grundfunktionen
Modularer Aufbau, gute Skalierbarkeit
Hohe Zuverlässigkeit
Unterstützen Sie die Hot-Bereitstellung: Aktualisieren Sie Konfigurationsdateien, aktualisieren Sie Versionen und ersetzen Sie Protokolldateien ohne Ausfallzeiten
Geringer Speicherverbrauch: 10.000 inaktive Verbindungen im Keep-Alive-Verbindungsmodus erfordern nur 2,5 MB Speicher
ereignisgesteuert, aio, mmap, sendfile
Webdienstbezogene Funktionen
Virtueller Host (Server)
Unterstützt Keep-Alive- und Pipeline-Verbindungen (Verwendung einer Verbindung, um mehrere Anfragen zu stellen)
Zugriffsprotokoll (unterstützt Protokollpufferung zur Verbesserung der Leistung)
URL umschreiben
Pfad-Alias
IP- und benutzerbasierte Zugriffskontrolle
Unterstützungsratenlimit und Parallelitätslimit
Neukonfiguration und Online-Upgrades ohne Unterbrechung der Kundenabläufe
Nginx-Prozessstruktur
Nginx ist ein Multiprozess-Organisationsmodell und besteht aus einem Master-Prozess und einem Worker-Prozess.
Funktionen des Masterprozesses:
对外接口:接收外部的操作(信号)
对内转发:根据外部的操作的不同,通过信号管理 Worker
监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
读取Nginx 配置文件并验证其有效性和正确性
建立、绑定和关闭socket连接
按照配置生成、管理和结束工作进程
接受外界指令,比如重启、升级及退出服务器等指令
不中断服务,实现平滑升级,重启服务并应用新的配置
开启日志文件,获取文件描述符
不中断服务,实现平滑升级,升级失败进行回滚处理
编译和处理perl脚本
Funktionen des Arbeitsprozesses:
所有 Worker 进程都是平等的
实际处理:网络请求,由 Worker 进程处理
Worker进程数量:一般设置为核心数,充分利用CPU资源,同时避免进程数量过多,导致进程竞争CPU资源,
增加上下文切换的损耗
接受处理客户的请求
将请求依次送入各个功能模块进行处理
I/O调用,获取响应数据
与后端服务器通信,接收后端服务器的处理结果
缓存数据,访问缓存索引,查询和调用缓存数据
发送请求结果,响应客户的请求
接收主程序指令,比如重启、升级和退出等
Einführung in das Nginx-Modul
Kernmodul: Es ist ein wesentliches Modul für den normalen Betrieb des Nginx-Servers. Es bietet Kernfunktionen wie Fehlerprotokollierung, Analyse von Konfigurationsdateien, ereignisgesteuerte Mechanismen und Prozessverwaltung.
Standard-HTTP-Modul: Bietet Funktionen im Zusammenhang mit der Analyse des HTTP-Protokolls, z. B. Portkonfiguration, Einstellungen für die Webseitenkodierung, Einstellungen für HTTP-Antwortheader usw.
Optionales HTTP-Modul: Wird hauptsächlich zur Erweiterung der Standard-HTTP-Funktionen verwendet, sodass Nginx einige spezielle Dienste verarbeiten kann, z. B. Flash-Multimedia-Übertragung, Analyse von GeoIP-Anforderungen, Komprimierung der Netzwerkübertragung, Unterstützung des Sicherheitsprotokolls SSL usw.
Mail-Service-Modul: Wird hauptsächlich zur Unterstützung des Nginx-Mail-Dienstes verwendet, einschließlich der Unterstützung des POP3-Protokolls, des IMAP-Protokolls und des SMTP-Protokolls
Stream-Service-Modul: Implementiert die Reverse-Proxy-Funktion, einschließlich TCP-Protokoll-Proxy
Modul von Drittanbietern: dient der Erweiterung der Nginx-Serveranwendung und der Vervollständigung entwicklerdefinierter Funktionen, z. B. Json-Unterstützung, Lua-Unterstützung usw.
Nginx-Version
Die Hauptversion ist die Hauptentwicklungsversion, normalerweise eine ungerade Versionsnummer, z. B. 1.19
Die stabile Version ist die neueste stabile Version, normalerweise eine Version mit gerader Nummer, wie zum Beispiel: 1.20
Legacy-Versionen alte stabile Versionen, normalerweise Versionen mit gerader Nummer, wie zum Beispiel: 1.18
Nginx kann mit yum oder Quellcode installiert werden, es wird jedoch empfohlen, zum Kompilieren und Installieren den Quellcode zu verwenden.
Die Version von yum ist älter
Durch das Kompilieren und Installieren können verwandte Pfade einfacher angepasst werden. Mithilfe der Quellcodekompilierung können verwandte Funktionen angepasst werden, was die Geschäftsnutzung erleichtert.
Der Docker-Container wird direkt ausgeführt
[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 ist in der Sprache C geschrieben, daher erfordert die Installation des Nginx-Quellcodes im Voraus die Vorbereitung eines Standard-Compilers. Der vollständige Name von GCC ist (GNU Compiler Collection). Es ist ein kostenloses UNIX -like, Apple Der Standard-Compiler für den Computer Mac OS Für andere Sprachen wird auch das Automake-Tool benötigt, um die automatische Erstellung von Makefile abzuschließen. Einige Module von Nginx müssen auf Bibliotheken von Drittanbietern angewiesen sein, wie zum Beispiel: pcre (unterstützt das Umschreiben ), zlib (unterstützt das gzip-Modul) und openssl (unterstützt das SSL-Modul) usw.
Offizielle Download-Adresse des Quellcodepakets: 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/