2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Nginx आधिकारिकजालस्थलम् : http://nginx.org
Nginx एकः मुक्तः, मुक्तस्रोतः, उच्चप्रदर्शनयुक्तः HTTP तथा च विपरीतप्रॉक्सीसर्वरः, ईमेलप्रॉक्सीसर्वरः, TCP/UDP प्रॉक्सीसर्वरः च अस्ति
nginx इत्यस्य अन्ये गौणविमोचनाः : १.
टेङ्गिने
ताओबाओ द्वारा आरब्धा जालसर्वर परियोजना। Nginx इत्यस्य आधारेण, बृहत्-यातायात-जालस्थलानां आवश्यकतानां पूर्तये अनेकानि उन्नतानि कार्याणि, विशेषताः च योजयति । Tengine इत्यस्य कार्यक्षमतायाः स्थिरतायाः च परीक्षणं Taobao, Tmall Mall इत्यादिषु बृहत् जालपुटेषु कृतम् अस्ति । अस्य परमं लक्ष्यं कुशलं, स्थिरं, सुरक्षितं, सुलभं च जालमञ्चं निर्मातुं भवति ।२०११ तमस्य वर्षस्य डिसेम्बरमासात् आरभ्य टेङ्गिन् इति मुक्तस्रोतप्रकल्पः अभवत्
आधिकारिकजालस्थलम् : http://tengine.taobao.org/
OpenResty
Nginx तथा Lua भाषा आधारित उच्च-प्रदर्शन-जाल-मञ्चः
आधिकारिकजालस्थलम् : http://openresty.org/cn/
Nginx कार्य परिचय
स्थिरजालसंसाधनसर्वर html, चित्राणि, js, css, txt इत्यादीनि स्थिरसंसाधनानि
http/https प्रोटोकॉलस्य कृते विपर्ययः प्रॉक्सी
प्रॉक्सी डायनामिक रिसोर्स अनुरोधं विपर्ययितुं FastCGI/uWSGI/SCGI इत्यादिभिः प्रोटोकॉलैः सह संयुक्तम्
tcp/udp प्रोटोकॉलस्य अग्रे प्रेषणस्य अनुरोधः (reverse proxy)
imap4/pop3 प्रोटोकॉलस्य कृते विपरीतप्रॉक्सी
मूलभूतविशेषताः
मॉड्यूलर डिजाइन, उत्तमं मापनीयता
उच्च विश्वसनीयता
उष्णनियोजनस्य समर्थनं करोति: विन्याससञ्चिकाः अद्यतनं कुर्वन्तु, संस्करणं उन्नयनं कुर्वन्तु, तथा च लॉगसञ्चिकाः अवकाशसमयं विना प्रतिस्थापयन्तु
न्यूनस्मृति-उपभोगः : keep-alive-सम्बद्ध-विधाने १०,००० निष्क्रिय-संयोजनानां कृते केवलं २.५M-स्मृतेः आवश्यकता भवति
घटना-प्रेरित,aio,mmap,sendfile
जालसेवा सम्बद्धानि कार्याणि
आभासी मेजबान (सर्वर) २.
keep-alive तथा pipeline संयोजनानां समर्थनं करोति (एकं संयोजनं बहुविधं अनुरोधं कर्तुं उपयुज्य)
Access log (तस्य कार्यक्षमतां सुधारयितुम् log buffering समर्थयति)
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 संस्करणम्
मुख्यरेखासंस्करणं मुख्यविकाससंस्करणं भवति, प्रायः विषमसंस्करणसङ्ख्या, यथा १.१९
स्थिरसंस्करणं नवीनतमं स्थिरसंस्करणं भवति, प्रायः समसङ्ख्यायुक्तं संस्करणं, यथा: १.२०
विरासतः संस्करणाः पुरातनाः स्थिरसंस्करणाः, प्रायः समसङ्ख्यायुक्ताः संस्करणाः, यथा: १.१८
Nginx yum अथवा स्रोतसङ्केतस्य उपयोगेन संस्थापयितुं शक्यते, परन्तु संकलनार्थं संस्थापनार्थं च स्रोतसङ्केतस्य उपयोगः अनुशंसितः ।
युम् इत्यस्य संस्करणं प्राचीनम् अस्ति
संकलनं संस्थापनं च सम्बन्धितमार्गाणां अनुकूलनं सुलभं कर्तुं शक्नोति स्रोतसङ्केतसंकलनस्य उपयोगेन सम्बन्धितकार्यं अनुकूलितुं शक्यते, यत् व्यावसायिकप्रयोगाय अधिकं सुविधाजनकं भवति ।
Docker container प्रत्यक्षतया चाल्यते
[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 भाषायां लिखितम् अस्ति, अतः Nginx स्रोतसङ्केतस्थापनस्य आवश्यकता अस्ति GCC इत्यस्य पूर्णं नाम (GNU Compiler collection) अस्ति तथा च GPL, अथवा LGPL द्वारा अनुज्ञापत्रं प्राप्तम् अस्ति -like, Apple सङ्गणकस्य कृते मानकसंकलकः Mac OS अन्यभाषाणां कृते, Makefile इत्यस्य स्वचालितनिर्माणं पूर्णं कर्तुं Automake साधनस्य अपि आवश्यकता वर्तते, यथा: 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/