informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Situs web resmi Nginx: http://nginx.org
Nginx adalah server proxy terbalik dan HTTP gratis, sumber terbuka, berkinerja tinggi, server proxy email, dan server proxy TCP/UDP
Rilis sekunder nginx lainnya:
Tengin
Sebuah proyek server web yang diprakarsai oleh Taobao. Berdasarkan Nginx, ia menambahkan banyak fungsi dan fitur canggih untuk memenuhi kebutuhan situs web dengan lalu lintas besar. Kinerja dan stabilitas Tengine telah diuji dengan baik di situs besar seperti Taobao, Tmall Mall, dll. Tujuan utamanya adalah menciptakan platform Web yang efisien, stabil, aman, dan mudah digunakan.Mulai bulan Desember 2011, Tengine menjadi proyek open source
Situs web resmi: http://tengine.taobao.org/
BukaResty
Platform web berkinerja tinggi berdasarkan bahasa Nginx dan Lua
Situs web resmi: http://openresty.org/cn/
Pengenalan fungsi Nginx
Server sumber daya web statis html, gambar, js, css, txt, dan sumber daya statis lainnya
Proksi terbalik untuk protokol http/https
Dikombinasikan dengan FastCGI/uWSGI/SCGI dan protokol lain untuk membalikkan permintaan sumber daya dinamis proxy
Permintaan penerusan protokol tcp/udp (proxy terbalik)
Membalikkan proksi untuk protokol imap4/pop3
Fitur dasar
Desain modular, skalabilitas yang baik
Keandalan tinggi
Mendukung penerapan panas: perbarui file konfigurasi, tingkatkan versi, dan ganti file log tanpa waktu henti
Konsumsi memori rendah: 10.000 koneksi tidak aktif dalam mode koneksi tetap hidup hanya memerlukan memori 2,5 juta
berbasis peristiwa,aio,mmap,kirimfile
Fungsi terkait layanan web
Tuan rumah maya (server)
Mendukung koneksi keep-alive dan pipeline (menggunakan satu koneksi untuk membuat banyak permintaan)
Akses log (mendukung buffering log untuk meningkatkan kinerjanya)
url ditulis ulang
alias jalur
IP dan kontrol akses berbasis pengguna
Batas laju dukungan dan batas konkurensi
Konfigurasi ulang dan peningkatan online tanpa mengganggu alur kerja pelanggan
Struktur proses Nginx
Nginx adalah model organisasi multi-proses, dan terdiri dari proses Master dan proses Pekerja.
Fungsi dari proses master:
对外接口:接收外部的操作(信号)
对内转发:根据外部的操作的不同,通过信号管理 Worker
监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
读取Nginx 配置文件并验证其有效性和正确性
建立、绑定和关闭socket连接
按照配置生成、管理和结束工作进程
接受外界指令,比如重启、升级及退出服务器等指令
不中断服务,实现平滑升级,重启服务并应用新的配置
开启日志文件,获取文件描述符
不中断服务,实现平滑升级,升级失败进行回滚处理
编译和处理perl脚本
Fungsi proses pekerja:
所有 Worker 进程都是平等的
实际处理:网络请求,由 Worker 进程处理
Worker进程数量:一般设置为核心数,充分利用CPU资源,同时避免进程数量过多,导致进程竞争CPU资源,
增加上下文切换的损耗
接受处理客户的请求
将请求依次送入各个功能模块进行处理
I/O调用,获取响应数据
与后端服务器通信,接收后端服务器的处理结果
缓存数据,访问缓存索引,查询和调用缓存数据
发送请求结果,响应客户的请求
接收主程序指令,比如重启、升级和退出等
Pengenalan modul Nginx
Modul inti: Ini adalah modul penting untuk pengoperasian normal server Nginx. Modul ini menyediakan fungsi inti seperti pencatatan kesalahan, penguraian file konfigurasi, mekanisme berbasis peristiwa, dan manajemen proses.
Modul HTTP standar: Menyediakan fungsi yang terkait dengan penguraian protokol HTTP, seperti: konfigurasi port, pengaturan pengkodean halaman web, pengaturan header respons HTTP, dll.
Modul HTTP opsional: Terutama digunakan untuk memperluas fungsi HTTP standar sehingga Nginx dapat menangani beberapa layanan khusus, seperti: transmisi multimedia Flash, penguraian permintaan GeoIP, kompresi transmisi jaringan, dukungan protokol keamanan SSL, dll.
Modul layanan email: Terutama digunakan untuk mendukung layanan email Nginx, termasuk dukungan untuk protokol POP3, protokol IMAP, dan protokol SMTP
Modul layanan streaming: mengimplementasikan fungsi proksi terbalik, termasuk proksi protokol TCP
Modul pihak ketiga: adalah untuk memperluas aplikasi server Nginx dan menyelesaikan fungsi yang ditentukan pengembang, seperti: dukungan Json, dukungan Lua, dll.
Versi Nginx
Versi arus utama adalah versi pengembangan utama, biasanya nomor versi ganjil, seperti 1.19
Versi stabil adalah versi stabil terbaru, biasanya versi bernomor genap, seperti: 1.20
Versi lama, versi stabil lama, biasanya versi bernomor genap, seperti: 1.18
Nginx dapat diinstal menggunakan yum atau kode sumber, namun disarankan untuk menggunakan kode sumber untuk mengkompilasi dan menginstal.
Versi yum lebih lama
Kompilasi dan instalasi dapat mempermudah penyesuaian jalur terkait. Menggunakan kompilasi kode sumber dapat menyesuaikan fungsi terkait, sehingga lebih nyaman untuk penggunaan bisnis.
Kontainer Docker berjalan secara langsung
[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 ditulis dalam bahasa C, jadi instalasi kode sumber Nginx memerlukan persiapan kompiler standar terlebih dahulu. Nama lengkap GCC adalah (kumpulan GNU Compiler). Ini dikembangkan oleh GNU dan dilisensikan oleh GPL, atau LGPL. Ini adalah UNIX gratis -seperti, Apple Kompiler standar untuk komputer Mac OS Untuk bahasa lain, alat Automake juga diperlukan untuk menyelesaikan pembuatan Makefile secara otomatis. Beberapa modul Nginx perlu bergantung pada perpustakaan pihak ketiga, seperti: pcre (mendukung penulisan ulang ), zlib (mendukung modul gzip) dan openssl (mendukung modul ssl), dll.
Alamat pengunduhan paket kode sumber resmi: 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/