2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Nginxin virallinen verkkosivusto: http://nginx.org
Nginx on ilmainen, avoimen lähdekoodin, korkean suorituskyvyn HTTP- ja käänteinen välityspalvelin, sähköpostin välityspalvelin ja TCP/UDP-välityspalvelin
Muut nginxin toissijaiset julkaisut:
Tengine
Taobaon käynnistämä verkkopalvelinprojekti. Nginxiin perustuen se lisää monia edistyneitä toimintoja ja ominaisuuksia vastaamaan suuren liikenteen verkkosivustojen tarpeisiin. Tenginen suorituskyky ja vakaus on testattu hyvin suurilla verkkosivustoilla, kuten Taobao, Tmall Mall jne. Sen perimmäisenä tavoitteena on luoda tehokas, vakaa, turvallinen ja helppokäyttöinen verkkoalusta.Joulukuusta 2011 alkaen Tenginestä tuli avoimen lähdekoodin projekti
Virallinen verkkosivusto: http://tengine.taobao.org/
OpenResty
Tehokas verkkoalusta, joka perustuu Nginx- ja Lua-kieleen
Virallinen verkkosivusto: http://openresty.org/cn/
Nginx-toiminnon esittely
Staattinen verkkoresurssipalvelin html, kuvat, js, css, txt ja muut staattiset resurssit
Käänteinen välityspalvelin http/https-protokollalle
Yhdistetty FastCGI/uWSGI/SCGI ja muihin protokolliin dynaamisten välityspalvelinpyyntöjen kääntämiseksi
Pyydä tcp/udp-protokollan edelleenlähetystä (käänteinen välityspalvelin)
Käänteinen välityspalvelin imap4/pop3-protokollalle
Perusominaisuudet
Modulaarinen rakenne, hyvä skaalautuvuus
Korkea luotettavuus
Tuki kuumakäyttöönottoa: päivitä määritystiedostoja, päivitä versioita ja vaihda lokitiedostot ilman seisokkeja
Alhainen muistinkulutus: 10 000 ei-aktiivista yhteyttä säilytysyhteystilassa vaatii vain 2,5 M muistia
tapahtumapohjainen, aio, mmap, lähetä tiedosto
Verkkopalveluun liittyvät toiminnot
Virtuaalinen isäntä (palvelin)
Tukee hengissäpito- ja putkiyhteyksiä (yhdellä yhteydellä useiden pyyntöjen tekemiseen)
Käyttöloki (tukee lokin puskurointia suorituskyvyn parantamiseksi)
URL-osoitteen uudelleenkirjoitus
polun alias
IP- ja käyttäjäpohjainen kulunvalvonta
Tukinopeusraja ja samanaikaisuusraja
Uudelleenkonfigurointi ja online-päivitykset keskeyttämättä asiakkaan työnkulkua
Nginx-prosessin rakenne
Nginx on monen prosessin organisaatiomalli, ja se koostuu Master-prosessista ja Worker-prosessista.
Pääprosessin toiminnot:
对外接口:接收外部的操作(信号)
对内转发:根据外部的操作的不同,通过信号管理 Worker
监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
读取Nginx 配置文件并验证其有效性和正确性
建立、绑定和关闭socket连接
按照配置生成、管理和结束工作进程
接受外界指令,比如重启、升级及退出服务器等指令
不中断服务,实现平滑升级,重启服务并应用新的配置
开启日志文件,获取文件描述符
不中断服务,实现平滑升级,升级失败进行回滚处理
编译和处理perl脚本
Työntekijäprosessin toiminnot:
所有 Worker 进程都是平等的
实际处理:网络请求,由 Worker 进程处理
Worker进程数量:一般设置为核心数,充分利用CPU资源,同时避免进程数量过多,导致进程竞争CPU资源,
增加上下文切换的损耗
接受处理客户的请求
将请求依次送入各个功能模块进行处理
I/O调用,获取响应数据
与后端服务器通信,接收后端服务器的处理结果
缓存数据,访问缓存索引,查询和调用缓存数据
发送请求结果,响应客户的请求
接收主程序指令,比如重启、升级和退出等
Nginx-moduulin esittely
Ydinmoduuli: Se on olennainen moduuli Nginx-palvelimen normaalille toiminnalle. Se tarjoaa ydintoimintoja, kuten virheiden kirjaamisen, määritystiedostojen jäsentämisen, tapahtumapohjaisen mekanismin ja prosessinhallinnan.
Normaali HTTP-moduuli: Tarjoaa HTTP-protokollan jäsentämiseen liittyviä toimintoja, kuten: portin määritys, verkkosivun koodausasetukset, HTTP-vastauksen otsikkoasetukset jne.
Valinnainen HTTP-moduuli: Käytetään pääasiassa tavallisten HTTP-toimintojen laajentamiseen, jotta Nginx pystyy käsittelemään joitain erikoispalveluita, kuten: Flash-multimedian lähetys, GeoIP-pyyntöjen jäsentäminen, verkkolähetyksen pakkaus, suojausprotokollan SSL-tuki jne.
Postipalvelumoduuli: Käytetään pääasiassa Nginx-sähköpostipalvelun tukemiseen, mukaan lukien tuki POP3-protokollalle, IMAP-protokollalle ja SMTP-protokollalle
Stream-palvelumoduuli: toteuttaa käänteisen välityspalvelimen, mukaan lukien TCP-protokollan välityspalvelimen
Kolmannen osapuolen moduuli: laajentaa Nginx-palvelinsovellusta ja täydentää kehittäjän määrittämiä toimintoja, kuten: Json-tuki, Lua-tuki jne.
Nginx versio
Pääversio on tärkein kehitysversio, yleensä pariton versionumero, kuten 1.19
Vakaa versio on viimeisin vakaa versio, yleensä parillinen versio, kuten: 1.20
Vanhat versiot vanhat vakaat versiot, yleensä parilliset versiot, kuten: 1.18
Nginx voidaan asentaa käyttämällä yumia tai lähdekoodia, mutta on suositeltavaa käyttää lähdekoodia kääntämiseen ja asentamiseen.
Yumin versio on vanhempi
Kääntäminen ja asentaminen voi helpottaa liittyvien polkujen mukauttamista Lähdekoodin käännöksen avulla voidaan mukauttaa liittyviä toimintoja, mikä tekee siitä mukavampaa yrityskäyttöön.
Docker-kontti kulkee suoraan
[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 on kirjoitettu C-kielellä, joten Nginxin lähdekoodin asennus vaatii etukäteen valmistelevan kääntäjän -kuten Apple Tavallinen kääntäjä tietokoneelle Mac OS Muilla kielillä Automake-työkalua tarvitaan myös Makefilen automaattiseen luomiseen. Jotkut Nginxin moduulit tarvitsevat kolmannen osapuolen kirjastoja, kuten: pcre (tukee uudelleenkirjoitusta. ), zlib (tukee gzip-moduulia) ja openssl (tukee ssl-moduulia) jne.
Virallinen lähdekoodipaketin latausosoite: 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/