τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Επίσημος ιστότοπος Nginx: http://nginx.org
Το Nginx είναι ένας δωρεάν, ανοιχτού κώδικα, υψηλής απόδοσης HTTP και αντίστροφος διακομιστής μεσολάβησης, διακομιστής μεσολάβησης email και διακομιστής μεσολάβησης TCP/UDP
Άλλες δευτερεύουσες εκδόσεις του nginx:
Tengine
Ένα έργο διακομιστή ιστού που ξεκίνησε από την Taobao. Βασισμένο στο Nginx, προσθέτει πολλές προηγμένες λειτουργίες και δυνατότητες για να καλύψει τις ανάγκες ιστότοπων μεγάλης επισκεψιμότητας. Η απόδοση και η σταθερότητα του Tengine έχουν δοκιμαστεί καλά σε μεγάλους ιστότοπους όπως το Taobao, το Tmall Mall κ.λπ. Ο απώτερος στόχος του είναι να δημιουργήσει μια αποτελεσματική, σταθερή, ασφαλή και εύχρηστη πλατφόρμα Web.Ξεκινώντας τον Δεκέμβριο του 2011, το Tengine έγινε έργο ανοιχτού κώδικα
Επίσημος ιστότοπος: http://tengine.taobao.org/
OpenResty
Πλατφόρμα Ιστού υψηλής απόδοσης που βασίζεται στη γλώσσα Nginx και Lua
Επίσημος ιστότοπος: http://openresty.org/cn/
Εισαγωγή της λειτουργίας Nginx
Διακομιστής στατικών πόρων ιστού html, εικόνες, js, css, txt και άλλοι στατικοί πόροι
Αντίστροφος διακομιστής μεσολάβησης για το πρωτόκολλο http/https
Συνδυάζεται με FastCGI/uWSGI/SCGI και άλλα πρωτόκολλα για την αντιστροφή αιτημάτων δυναμικών πόρων διακομιστή μεσολάβησης
Αίτημα προώθησης πρωτοκόλλου tcp/udp (αντίστροφος διακομιστής μεσολάβησης)
Αντίστροφος διακομιστής μεσολάβησης για το πρωτόκολλο imap4/pop3
Βασικά χαρακτηριστικά
Αρθρωτός σχεδιασμός, καλή επεκτασιμότητα
Υψηλή αξιοπιστία
Υποστήριξη άμεσης ανάπτυξης: ενημέρωση αρχείων διαμόρφωσης, αναβάθμιση εκδόσεων και αντικατάσταση αρχείων καταγραφής χωρίς διακοπές λειτουργίας
Χαμηλή κατανάλωση μνήμης: 10.000 ανενεργές συνδέσεις σε λειτουργία διατήρησης ζωντανής σύνδεσης απαιτούν μόνο 2,5 εκατομμύρια μνήμης
συμβάντων, aio, mmap, αρχείο αποστολής
Λειτουργίες που σχετίζονται με την υπηρεσία Ιστού
Εικονικός κεντρικός υπολογιστής (διακομιστής)
Υποστηρίζει τις συνδέσεις διατήρησης και αγωγών (χρησιμοποιώντας μία σύνδεση για την υποβολή πολλαπλών αιτημάτων)
Αρχείο καταγραφής πρόσβασης (υποστηρίζει την αποθήκευση στο buffer για τη βελτίωση της απόδοσής του)
url rewirte
μονοπάτι ψευδώνυμο
IP και έλεγχος πρόσβασης βάσει χρήστη
Όριο ποσοστού υποστήριξης και όριο συγχρονισμού
Αναδιαμόρφωση και αναβαθμίσεις στο διαδίκτυο χωρίς διακοπή των ροών εργασίας των πελατών
Δομή διαδικασίας Nginx
Το Nginx είναι ένα μοντέλο οργάνωσης πολλαπλών διαδικασιών και αποτελείται από μια διαδικασία Master και μια διαδικασία Worker.
Λειτουργίες της κύριας διαδικασίας:
对外接口:接收外部的操作(信号)
对内转发:根据外部的操作的不同,通过信号管理 Worker
监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
读取Nginx 配置文件并验证其有效性和正确性
建立、绑定和关闭socket连接
按照配置生成、管理和结束工作进程
接受外界指令,比如重启、升级及退出服务器等指令
不中断服务,实现平滑升级,重启服务并应用新的配置
开启日志文件,获取文件描述符
不中断服务,实现平滑升级,升级失败进行回滚处理
编译和处理perl脚本
Λειτουργίες της διαδικασίας των εργαζομένων:
所有 Worker 进程都是平等的
实际处理:网络请求,由 Worker 进程处理
Worker进程数量:一般设置为核心数,充分利用CPU资源,同时避免进程数量过多,导致进程竞争CPU资源,
增加上下文切换的损耗
接受处理客户的请求
将请求依次送入各个功能模块进行处理
I/O调用,获取响应数据
与后端服务器通信,接收后端服务器的处理结果
缓存数据,访问缓存索引,查询和调用缓存数据
发送请求结果,响应客户的请求
接收主程序指令,比如重启、升级和退出等
Εισαγωγή της ενότητας Nginx
Βασική ενότητα: Είναι μια βασική ενότητα για την κανονική λειτουργία του διακομιστή Nginx Παρέχει βασικές λειτουργίες όπως καταγραφή σφαλμάτων, ανάλυση αρχείων διαμόρφωσης, μηχανισμό βάσει συμβάντων και διαχείριση διεργασιών.
Τυπική μονάδα HTTP: Παρέχει λειτουργίες που σχετίζονται με την ανάλυση πρωτοκόλλου HTTP, όπως: διαμόρφωση θύρας, ρυθμίσεις κωδικοποίησης ιστοσελίδας, ρυθμίσεις κεφαλίδας απόκρισης HTTP κ.λπ.
Προαιρετική μονάδα HTTP: Χρησιμοποιείται κυρίως για την επέκταση τυπικών λειτουργιών HTTP, έτσι ώστε το Nginx να μπορεί να χειριστεί ορισμένες ειδικές υπηρεσίες, όπως: μετάδοση πολυμέσων Flash, ανάλυση αιτημάτων GeoIP, συμπίεση μετάδοσης δικτύου, υποστήριξη πρωτοκόλλου ασφαλείας SSL κ.λπ.
Μονάδα υπηρεσίας αλληλογραφίας: Χρησιμοποιείται κυρίως για την υποστήριξη της υπηρεσίας αλληλογραφίας Nginx, συμπεριλαμβανομένης της υποστήριξης για πρωτόκολλο POP3, πρωτόκολλο IMAP και πρωτόκολλο SMTP
Μονάδα υπηρεσίας ροής: υλοποιεί τη λειτουργία αντίστροφου διακομιστή μεσολάβησης, συμπεριλαμβανομένου του διακομιστή μεσολάβησης πρωτοκόλλου TCP
Ενότητα τρίτου μέρους: είναι η επέκταση της εφαρμογής διακομιστή Nginx και η ολοκλήρωση των λειτουργιών που καθορίζονται από τον προγραμματιστή, όπως: υποστήριξη Json, υποστήριξη Lua κ.λπ.
Έκδοση Nginx
Η κύρια έκδοση είναι η κύρια έκδοση ανάπτυξης, συνήθως ένας μονός αριθμός έκδοσης, όπως η 1.19
Η σταθερή έκδοση είναι η πιο πρόσφατη σταθερή έκδοση, συνήθως μια έκδοση με ζυγό αριθμό, όπως: 1.20
Εκδόσεις παλαιού τύπου παλιές σταθερές εκδόσεις, συνήθως ζυγές εκδόσεις, όπως: 1.18
Το Nginx μπορεί να εγκατασταθεί χρησιμοποιώντας yum ή πηγαίο κώδικα, αλλά συνιστάται η χρήση πηγαίου κώδικα για μεταγλώττιση και εγκατάσταση.
Η έκδοση του yum είναι παλαιότερη
Η μεταγλώττιση και η εγκατάσταση μπορεί να διευκολύνει την προσαρμογή των σχετικών διαδρομών Η χρήση της μεταγλώττισης πηγαίου κώδικα μπορεί να προσαρμόσει τις σχετικές λειτουργίες, καθιστώντας την πιο βολική για επαγγελματική χρήση.
Το δοχείο Docker λειτουργεί απευθείας
[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 είναι γραμμένο σε γλώσσα C, επομένως η εγκατάσταση του πηγαίου κώδικα απαιτεί εκ των προτέρων προετοιμασία ενός τυπικού μεταγλωττιστή -όπως, Apple Ο τυπικός μεταγλωττιστής για τον υπολογιστή Mac OS Για άλλες γλώσσες, το εργαλείο Automake είναι επίσης απαραίτητο για την ολοκλήρωση της αυτόματης δημιουργίας του Makefile Ορισμένες μονάδες του Nginx πρέπει να βασίζονται σε βιβλιοθήκες τρίτων, όπως: pcre (υποστηρίζει επανεγγραφή. ), zlib (υποστηρίζει μονάδα gzip) και openssl (υποστηρίζει μονάδα ssl) κ.λπ.
Επίσημη διεύθυνση λήψης πακέτου πηγαίου κώδικα: 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/