欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Nginx基礎(chǔ)

簡(jiǎn)介

Nginx: engine X,2002年開(kāi)始開(kāi)發(fā),2004年開(kāi)源,2019年3月11日,Nginx公司被F5 Network以6.7億美元收購(gòu)。
Nginx是免費(fèi)的、開(kāi)源的、高性能的HTTP和反向代理服務(wù)器、郵件代理服務(wù)器,以及TCP/UDP代理服務(wù)器,解決了C10K問(wèn)題(10K Connections),http://www.ideawu.net/blog/archives/740.html
Nginx官網(wǎng):http://nginx.org
Nginx 商業(yè)版為Nginx Plus:https://www.nginx.com/products/nginx/
nginx的其它的二次發(fā)行版:
  Tengine:由淘寶網(wǎng)發(fā)起的Web服務(wù)器項(xiàng)?。它在Nginx的基礎(chǔ)上,針對(duì)?訪問(wèn)量?
站的需求,添加了很多?級(jí)功能和特性。Tengine的性能和穩(wěn)定性已經(jīng)在?型的網(wǎng)站如淘寶網(wǎng),天貓商城等得到了很好的檢驗(yàn)。它的最終?標(biāo)是打造?個(gè)高效、穩(wěn)定、安全、易?的Web平臺(tái),從2011年12?開(kāi)始,Tengine成為?個(gè)開(kāi)源項(xiàng)?,官? http://tengine.taobao.org/
  OpenResty:基于 Nginx 與 Lua 語(yǔ)言的高性能 Web 平臺(tái), 章亦春團(tuán)隊(duì)開(kāi)發(fā),官?:http://openresty.org/cn/

1 Nginx功能介紹

靜態(tài)的web資源服務(wù)器html,圖?,js,css,txt等靜態(tài)資源 結(jié)合FastCGI/uWSGI/SCGI等協(xié)議反向代理動(dòng)態(tài)資源請(qǐng)求 http/https協(xié)議的反向代理 imap4/pop3協(xié)議的反向代理 tcp/udp協(xié)議的請(qǐng)求轉(zhuǎn)發(fā)(反向代理)

1.1 基礎(chǔ)特性

特性:
模塊化設(shè)計(jì),較好的擴(kuò)展性
?可靠性
?持熱部署:不停機(jī)更新配置?件,升級(jí)版本,更換?志?件
低內(nèi)存消耗:10000個(gè)keep-alive連接模式下的?活動(dòng)連接,僅需2.5M內(nèi)存
event-driven,aio,mmap,sendfile

基本功能:
靜態(tài)資源的web服務(wù)器
http協(xié)議反向代理服務(wù)器
pop3/imap4協(xié)議反向代理服務(wù)器
FastCGI(LNMP),uWSGI(python)等協(xié)議
模塊化(?DSO),如zip,SSL模塊

1.2 和web服務(wù)相關(guān)的功能

虛擬主機(jī)(server)
?持 keep-alive 和管道連接(利??個(gè)連接做多次請(qǐng)求)
訪問(wèn)?志(?持基于?志緩沖提?其性能)
url rewirte
路徑別名
基于IP及??的訪問(wèn)控制
?持速率限制及并發(fā)數(shù)限制
重新配置和在線升級(jí)??須中斷客?的?作進(jìn)程

2 Nginx組織結(jié)構(gòu)

web請(qǐng)求處理機(jī)制: 
1、多進(jìn)程?式:服務(wù)器每接收到?個(gè)客?端請(qǐng)求就有服務(wù)器的主進(jìn)程?成?個(gè)?進(jìn)程響應(yīng)客戶端,直到?戶關(guān)閉連接,這樣的優(yōu)勢(shì)是處理速度快,各?進(jìn)程之間相互獨(dú)?,但是如果訪問(wèn)過(guò)?會(huì)導(dǎo)致服務(wù)器資源耗盡??法提供請(qǐng)求。 
2、多線程?式:與多進(jìn)程?式類似,但是每收到?個(gè)客?端請(qǐng)求會(huì)有服務(wù)進(jìn)程派?出?
個(gè)線程來(lái)跟客戶?進(jìn)?交互,?個(gè)線程的開(kāi)銷遠(yuǎn)遠(yuǎn)?于?個(gè)進(jìn)程,因此多線程?式在很?程度減輕了web服務(wù)器對(duì)系統(tǒng)資源的要求,但是多線程也有??的缺點(diǎn),即當(dāng)多個(gè)線程位于同?個(gè)進(jìn)程內(nèi)?作的時(shí)候,可以相互訪問(wèn)同樣的內(nèi)存地址空間,所以他們相互影響,另外?旦主進(jìn)程掛掉則所有?線程都不能?作了,IIS服務(wù)器使?了多線程的?式,需要間隔?段時(shí)間就重啟?次才能穩(wěn)定。

2.1 組織模型

Nginx是多進(jìn)程組織模型,由Master主進(jìn)程和Worker工作進(jìn)程組成,如下圖:

Nginx基礎(chǔ)

沐川網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站2013年至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。

主進(jìn)程(master process)的功能:

讀取Nginx 配置?件并驗(yàn)證其有效性和正確性
建?、綁定和關(guān)閉socket連接
按照配置?成、管理和結(jié)束?作進(jìn)程
接受外界指令,?如重啟、升級(jí)及退出服務(wù)器等指令
不中斷服務(wù),實(shí)現(xiàn)平滑升級(jí),重啟服務(wù)并應(yīng)?新的配置
開(kāi)啟?志?件,獲取?件描述符
不中斷服務(wù),實(shí)現(xiàn)平滑升級(jí),升級(jí)失敗進(jìn)?回滾處理
編譯和處理perl腳本

?作進(jìn)程(woker process)的功能:

接受處理客?的請(qǐng)求
將請(qǐng)求以此送?各個(gè)功能模塊進(jìn)?處理
IO調(diào)?,獲取響應(yīng)數(shù)據(jù)
與后端服務(wù)器通信,接收后端服務(wù)器的處理結(jié)果
緩存數(shù)據(jù),訪問(wèn)緩存索引,查詢和調(diào)?緩存數(shù)據(jù)
發(fā)送請(qǐng)求結(jié)果,響應(yīng)客?的請(qǐng)求
接收主程序指令,?如重啟、升級(jí)和退出等

2.2 進(jìn)程間通信

Nginx基礎(chǔ)

# 主進(jìn)程與工作進(jìn)程通信
?作進(jìn)程是由主進(jìn)程?成的,主進(jìn)程使?fork()函數(shù),在Nginx服務(wù)器啟動(dòng)過(guò)程中主進(jìn)程根據(jù)配置?件決定啟動(dòng)?作進(jìn)程的數(shù)量,然后建??張全局的?作表?于存放當(dāng)前未退出的所有的?作進(jìn)程,主進(jìn)程?成?作進(jìn)程后會(huì)將新?成的?作進(jìn)程加?到?作進(jìn)程表中,并建??個(gè)單向的管道并將其傳遞給?作進(jìn)程,該管道與普通的管道不同,它是由主進(jìn)程指向?作進(jìn)程的單項(xiàng)通道,包含了主進(jìn)程向?作進(jìn)程發(fā)出的指令、?作進(jìn)程ID、?作進(jìn)程在?作進(jìn)程表中的索引和必要的?件描述符等信息。 主進(jìn)程與外界通過(guò)信號(hào)機(jī)制進(jìn)?通信,當(dāng)接收到需要處理的信號(hào)時(shí),它通過(guò)管道向相關(guān)的?作進(jìn)程發(fā)送正確的指令,每個(gè)?作進(jìn)程都有能?捕獲管道中的可讀事件,當(dāng)管道中有可讀事件的時(shí)候,?作進(jìn)程就會(huì)從管道中讀取并解析指令,然后采取相應(yīng)的執(zhí)?動(dòng)作,這樣就完成了主進(jìn)程與?作進(jìn)程的交互。
# 工作進(jìn)程間通信
?作進(jìn)程之間的通信原理基本上和主進(jìn)程與?作進(jìn)程之間的通信是?樣的,只要?作進(jìn)程之 間能夠取得彼此的信息,建?管道即可通信,但是由于?作進(jìn)程之間是完全隔離的,因此?個(gè)進(jìn)程想要直到另外?個(gè)進(jìn)程的狀態(tài)信息就只能通過(guò)主進(jìn)程來(lái)設(shè)置了。
為了實(shí)現(xiàn)?作進(jìn)程之間的交互,主進(jìn)程在?成?作進(jìn)程只之后,在?作進(jìn)程表中進(jìn)?遍歷,將該新進(jìn)程的ID以及針對(duì)該進(jìn)程建?的管道句柄傳遞給?作進(jìn)程中的其他進(jìn)程,為?作進(jìn)程之間的通信做準(zhǔn)備,當(dāng)?作進(jìn)程1向?作進(jìn)程2發(fā)送指令的時(shí)候,?先在主進(jìn)程給它的其他?作進(jìn)程?作信息中找到2的進(jìn)程ID,然后將正確的指令寫?指向進(jìn)程2的管道,?作進(jìn)程2捕獲到管道中的事件后,解析指令并進(jìn)?相關(guān)操作,這樣就完成了?作進(jìn)程之間的通信。

3 Nginx模塊介紹

名稱功能
核?模塊 Nginx 服務(wù)器正常運(yùn)?必不可少的模塊,提供錯(cuò)誤?志記錄、配置?件解析、事件驅(qū)動(dòng)機(jī)制 、進(jìn)程管理等核?功能
標(biāo)準(zhǔn)HTTP模塊 提供 HTTP 協(xié)議解析相關(guān)的功能,?如:端?配置、??編碼設(shè)置 、HTTP響應(yīng)頭設(shè)置等等
可選HTTP模塊 主要?于擴(kuò)展標(biāo)準(zhǔn)的 HTTP 功能,讓 Nginx 能處理?些特殊的服務(wù),?如:Flash多媒體傳輸、解析GeoIP請(qǐng)求、?絡(luò)傳輸壓縮、安全協(xié)議SSL?持等
郵件服務(wù)模塊 主要?于?持Nginx 的 郵件服務(wù) ,包括對(duì) POP3 協(xié)議、 IMAP 協(xié)議和 SMTP協(xié)議的?持
第三?模塊 是為了擴(kuò)展Nginx服務(wù)器應(yīng)?,完成開(kāi)發(fā)者?定義功能,?如:Json?持、Lua?持等

4 Nginx安裝

Nginx的安裝版本分為Mainline version(主要開(kāi)發(fā)版本,其實(shí)就是還處于開(kāi)發(fā)版)、Stable version(當(dāng)前最新穩(wěn)定版)和Legacy versions(舊的穩(wěn)定版), Nginx安裝可以使?yum或源碼安裝,但是推薦使?源碼,?是yum的版本?較舊,?是編譯安裝可以更?便?定義相關(guān)路徑,三是使?源碼編譯可以?定義相關(guān)功能,更?便業(yè)務(wù)的上的使?,源碼安裝需要提前準(zhǔn)備標(biāo)準(zhǔn)的編譯器,GCC的全稱是(GNU Compiler collection),其有GNU開(kāi)發(fā),并以GPL即LGPL許可,是?由的類UNIX即蘋果電腦Mac OS X操作系統(tǒng)的標(biāo)準(zhǔn)編譯器,因?yàn)镚CC原本只能處理C語(yǔ)?,所以原名為GNU C語(yǔ)?編譯器,后來(lái)得到快速發(fā)展,可以處理C++,Fortran,pascal,objective-C,java以及Ada等其他語(yǔ)?,此外還需要Automake?具,以完成?動(dòng)創(chuàng)建Makefile的?作,Nginx的?些模塊需要依賴第三?庫(kù),?如pcre(?持rewrite),zlib(?持gzip模塊)和openssl(?持ssl模塊)等。

4.1 yum安裝

# 此方式需要提前裝備好epel源
[root@CentOS7-01 ~]#yum -y install epel-release
[root@CentOS7-01 ~]#yum -y install nginx
# 查看nginx軟件包的文件
[root@CentOS7-01 ~]#rpm -ql nginx
# 查看nginx軟件包的詳細(xì)信息
[root@CentOS7-01 ~]#rpm -qi nginx
# 獲取nginx使用幫助
[root@CentOS7-01 ~]#nginx -h
nginx version: nginx/1.16.1
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
-?,-h : this help #顯示幫助
-v : show version and exit #顯示版本并且推出
-V : show version and configure options then exit #顯?版本和編譯參數(shù)
-t : test configuration and exit #測(cè)試配置?件是否異常
-T : test configuration, dump it and exit #測(cè)試并打印
-q : suppress non-error messages during configuration testing #靜默模式
-s signal : send signal to a master process: stop, quit, reopen, reload #發(fā)送信號(hào)
-p prefix : set prefix path (default: /usr/share/nginx/) #指定Nginx ?錄
-c filename : set configuration file (default: /etc/nginx/nginx.conf) #配置?件路徑
-g directives : set global directives out of configuration file #設(shè)置全局指令
# 測(cè)試nginx配置文件是否正常
[root@CentOS7-01 ~]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# 顯示版本和編譯參數(shù),該選項(xiàng)在需要安裝和現(xiàn)有版本一樣配置的nginx時(shí)很有用
[root@CentOS7-01 ~]#nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-stream_ssl_preread_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-http_auth_request_module --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-google_perftools_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'
# Nginx啟動(dòng)腳本
[root@CentOS7-01 ~]#cat /usr/lib/systemd/system/nginx.service
# Nginx主配置文件
[root@CentOS7-01 ~]#cat /etc/nginx/nginx.conf
# 啟動(dòng)Nginx
[root@CentOS7-01 ~]#systemctl enable --now nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@CentOS7-01 ~]#systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-01-01 22:10:43 CST; 4s ago
  Process: 10961 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 10958 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 10956 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 10963 (nginx)
   CGroup: /system.slice/nginx.service
           ├─10963 nginx: master process /usr/sbin/nginx
           ├─10964 nginx: worker process
           └─10965 nginx: worker process

Jan 01 22:10:43 CentOS7-01.localdomain systemd[1]: Starting The nginx HTTP and r....
Jan 01 22:10:43 CentOS7-01.localdomain nginx[10958]: nginx: the configuration fi...k
Jan 01 22:10:43 CentOS7-01.localdomain nginx[10958]: nginx: configuration file /...l
Jan 01 22:10:43 CentOS7-01.localdomain systemd[1]: Started The nginx HTTP and re....
Hint: Some lines were ellipsized, use -l to show in full.
# 查看nginx進(jìn)程信息
[root@CentOS7-01 ~]#ps -ef |grep nginx|grep -v grep
root      10963      1  0 22:10 ?        00:00:00 nginx: master process /usr/sbin/nginx
nginx     10964  10963  0 22:10 ?        00:00:00 nginx: worker process
nginx     10965  10963  0 22:10 ?        00:00:00 nginx: worker process
# 訪問(wèn)測(cè)試
[root@CentOS7-01 ~]#curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Wed, 01 Jan 2020 14:14:02 GMT
Content-Type: text/html
Content-Length: 4833
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
Connection: keep-alive
ETag: "53762af0-12e1"
Accept-Ranges: bytes

4.2 編譯安裝

# 準(zhǔn)備編譯安裝的基礎(chǔ)環(huán)境
[root@CentOS7-01 ~]#yum install -y vim lrzsz tree screen psmisc lsof tcpdump wget ntpdate gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools iotop bc zip unzip zlib-devel bash-completion nfs-utils automake libxml2 libxml2-devel libxslt libxslt-devel perl perl-ExtUtils-Embed GeoIP-devel gd-devel
# 安裝nginx
[root@CentOS7-01 ~]#cd /usr/local/src/
[root@CentOS7-01 src]#wget https://nginx.org/download/nginx-1.16.1.tar.gz
[root@CentOS7-01 src]#tar xf nginx-1.16.1.tar.gz
[root@CentOS7-01 src]#cd nginx-1.16.1
# 注:編譯是為了檢查系統(tǒng)環(huán)境是否符合編譯安裝的要求,?如是否有g(shù)cc編譯?具,是否?持編譯參數(shù)當(dāng)中的模塊,并根據(jù)開(kāi)啟的參數(shù)等?成Makefile?件為下?步做準(zhǔn)備:
[root@CentOS7-01 src]#./configure --prefix=/apps/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module  \
--with-http_image_filter_module \
--with-http_geoip_module \
--with-http_gunzip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
[root@CentOS7-01 src]#make -j `lscpu |awk 'NR==4{print $2}'` && make install
[root@CentOS7-01 src]#useradd nginx -s /sbin/nologin -u 2000
[root@CentOS7-01 src]#chown nginx:nginx -R /apps/nginx/
注:nginx安裝完成后,有四個(gè)主要的目錄
conf:該?錄中保存了nginx所有的配置?件,其中nginx.conf是nginx服務(wù)器的最核?最主要的配置?件,其他的.conf則是?來(lái)配置nginx相關(guān)的功能的,例如fastcgi功能使?的是fastcgi.conf和fastcgi_params兩個(gè)?件,配置?件?般都有個(gè)樣板配置?件,?件名是以.default結(jié)尾,使?的時(shí)候?qū)⑵鋸?fù)制并將default去掉即可。
html:該?錄中保存了nginx服務(wù)器的web?件,但是可以更改為其他?錄保存web?件,另外還有?個(gè)50x的web?件是默認(rèn)的錯(cuò)誤??提???。
logs:該?錄?來(lái)保存nginx服務(wù)器的訪問(wèn)?志錯(cuò)誤?志等?志,logs?錄可以放在其他路徑,?如/var/logs/nginx??。
sbin:該?錄?來(lái)保存nginx?進(jìn)制啟動(dòng)腳本,可以接受不同的參數(shù)以實(shí)現(xiàn)不同的功能。
# 配置環(huán)境變量
[root@CentOS7-01 src]#echo "PATH=/apps/nginx/sbin:$PATH" > /etc/profile.d/nginx.sh
[root@CentOS7-01 src]#source /etc/profile.d/nginx.sh
# 驗(yàn)證版本及編譯參數(shù)
[root@CentOS7-01 src]#nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/apps/nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_image_filter_module --with-http_geoip_module --with-http_gunzip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
# 啟動(dòng)nginx并測(cè)試訪問(wèn)
[root@CentOS7-01 src]#nginx
[root@CentOS7-01 src]#curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Thu, 02 Jan 2020 03:37:58 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Thu, 02 Jan 2020 03:09:54 GMT
Connection: keep-alive
ETag: "5e0d5f02-264"
Accept-Ranges: bytes
# 創(chuàng)建nginx自啟動(dòng)腳本
[root@CentOS7-01 src]#cat /usr/lib/systemd/system/nginx.service 
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/apps/nginx/sbin/nginx -t  #此處要寫nginx編譯安裝時(shí)候指定安裝的位置路徑                                            
ExecStart=/apps/nginx/sbin/nginx #同上
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target
[root@CentOS7-01 src]#sed -i -e '/^#pid/a\pid \/run\/nginx.pid;' -e '/^#user/a\user nginx;' /apps/nginx/conf/nginx.conf
# 驗(yàn)證nginx自啟動(dòng)腳本
[root@CentOS7-01 src]#systemctl deamon-reload
[root@CentOS7-01 src]#systemctl enable --now nginx
[root@CentOS7-01 src]#systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-01-02 12:31:42 CST; 1s ago
  Process: 32753 ExecStart=/apps/nginx/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 32750 ExecStartPre=/apps/nginx/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 32748 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 32755 (nginx)
   CGroup: /system.slice/nginx.service
           ├─32755 nginx: master process /apps/nginx/sbin/nginx
           └─32756 nginx: worker process

Jan 02 12:31:42 CentOS7-01.localdomain systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jan 02 12:31:42 CentOS7-01.localdomain nginx[32750]: nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
Jan 02 12:31:42 CentOS7-01.localdomain nginx[32750]: nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
Jan 02 12:31:42 CentOS7-01.localdomain systemd[1]: Started The nginx HTTP and reverse proxy server.

# nginx默認(rèn)主配置文件解釋
主配置文件路徑:/apps/nginx/conf/nginx.conf
主配置文件的配置指令方式:
directive value [value2 ...];
注意:
(1) 指令必須以分號(hào)結(jié)尾
(2) ?持使?配置變量
        內(nèi)建變量:由Nginx模塊引?,可直接引?
        ?定義變量:由用戶使?set命令定義
                   set variable_name value;
        引?變量:$variable_name

[root@CentOS7-01 src]#egrep -v "^$|#" /apps/nginx/conf/nginx.conf
#全局配置段,對(duì)全局?效,主要設(shè)置nginx工作進(jìn)程的啟動(dòng)?戶/組、啟動(dòng)的?作進(jìn)程數(shù)量、?作模式、Nginx的PID文件路徑,?志路徑等。
user  nginx; #啟動(dòng)Nginx?作進(jìn)程的?戶,默認(rèn)是nobody
worker_processes  1; #啟動(dòng)?作進(jìn)程數(shù)數(shù)量
pid /run/nginx.pid; #nginx的pid文件路徑
events { #events設(shè)置塊,主要影響nginx服務(wù)器與?戶的?絡(luò)連接,?如是否允許同時(shí)接受多個(gè)?絡(luò)連接,使?哪種事件驅(qū)動(dòng)模型處理請(qǐng)求,每個(gè)?作進(jìn)程可以同時(shí)?持的最?連接數(shù),是否開(kāi)啟對(duì)多?作進(jìn)程下的?絡(luò)連接進(jìn)?序列化等。
    worker_connections  1024; #設(shè)置單個(gè)nginx?作進(jìn)程可以接受的最?并發(fā),作為web服務(wù)器的時(shí)候最?并發(fā)數(shù)為worker_connections * worker_processes,作為反向代理的時(shí)候?yàn)?worker_connections * worker_processes)/2
}
http { #http塊是Nginx服務(wù)器配置中的重要部分,緩存、代理和?志格式定義等絕?多數(shù)功能和第三?模塊都可以在這設(shè)置,http塊可以包含多個(gè)server塊,??個(gè)server塊中?可以包含多個(gè)location塊,server塊可以配置?件引?、MIME-Type定義、?志?定義、是否啟?sendfile、連接超時(shí)時(shí)間和單個(gè)鏈接的請(qǐng)求上限等。
    include       mime.types; # 導(dǎo)入?持的mime類型,MIME(Multipurpose Internet Mail Extensions)多?途互聯(lián)?郵件擴(kuò)展類型,MIME消息能包含?本、圖像、?頻、視頻以及其他應(yīng)?程序?qū)?的數(shù)據(jù),是設(shè)定某種擴(kuò)展名的?件??種應(yīng)?程序來(lái)打開(kāi)的?式類型,當(dāng)該擴(kuò)展名?件被訪問(wèn)的時(shí)候,瀏覽器會(huì)?動(dòng)使?指定應(yīng)?程序來(lái)打開(kāi)。多?于指定?些客戶端?定義的?件名,以及?些媒體?件打開(kāi)?式。MIME參考?檔:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_Types
    default_type  application/octet-stream; 
    sendfile        on; #作為web服務(wù)器的時(shí)候打開(kāi)sendfile加快靜態(tài)?件傳輸,指定是否使?sendfile系統(tǒng)調(diào)?來(lái)傳輸?件,sendfile系統(tǒng)調(diào)?在兩個(gè)?件描述符之間直接傳遞數(shù)據(jù)(完全在內(nèi)核中操作),從?避免了數(shù)據(jù)在內(nèi)核緩沖區(qū)和??緩沖區(qū)之間的拷?,操作效率很?,被稱之為零拷?,硬盤 >> kernel buffer (快速拷?到kernelsocket buffer) >>協(xié)議棧。
    keepalive_timeout  65; #?連接超時(shí)時(shí)間,單位是秒
    server { #設(shè)置?個(gè)虛擬機(jī)主機(jī),可以包含??的全局塊,同時(shí)也可以包含多個(gè)location模塊。?如本虛擬機(jī)監(jiān)聽(tīng)的端?、本虛擬機(jī)的名稱和IP配置,多個(gè)server可以共??個(gè)端?,?如都使?80端?提供web服務(wù)
        listen       80; #配置server監(jiān)聽(tīng)的端?
        server_name  localhost; #本server的名稱,當(dāng)訪問(wèn)此名稱的時(shí)候nginx會(huì)調(diào)?當(dāng)前server內(nèi)部的配置進(jìn)程匹配。
        location / { #location其實(shí)是server的?個(gè)指令,為nginx服務(wù)器提供?較多?且靈活的指令,都是在location中體現(xiàn)的,主要是基于nginx接收到的請(qǐng)求字符串,對(duì)?戶請(qǐng)求的URL進(jìn)?匹配,并對(duì)特定的指令進(jìn)?處理,包括地址重定向、數(shù)據(jù)緩存和應(yīng)答控制等功能都是在這部分實(shí)現(xiàn),另外很多第三?模塊的配置也是在location模塊中配置。
            root   html; #相當(dāng)于默認(rèn)??的?錄名稱,默認(rèn)是相對(duì)路徑,可以使?絕對(duì)路徑配置。
            index  index.html index.htm; #默認(rèn)的???件名稱
        }
        error_page   500 502 503 504  /50x.html; #錯(cuò)誤??的?件名稱
        location = /50x.html { #location處理對(duì)應(yīng)的不同錯(cuò)誤碼的??定義到/50x.html,這個(gè)/對(duì)應(yīng)其server中定義的?錄下。
            root   html; #定義默認(rèn)??所在的?錄
        }
    }
}

4.3 編譯安裝后使用systemd管理nginx服務(wù)時(shí)遇到的問(wèn)題及解決方法

# 在上面,編譯安裝完成后創(chuàng)建了一個(gè)nginx服務(wù)腳本,目的是為了使用systemd來(lái)管理nginx,然而在啟動(dòng)的時(shí)候報(bào)如下錯(cuò)誤,導(dǎo)致nginx啟動(dòng)失敗
[root@CentOS7-01 src]#systemctl restart nginx
Job for nginx.service failed because a timeout was exceeded. See "systemctl status nginx.service" and "journalctl -xe" for details.
[root@CentOS7-01 src]#tail -f /var/log/messages
Jan  2 14:37:09 CentOS7-01 systemd: Starting The nginx HTTP and reverse proxy server...
Jan  2 14:37:09 CentOS7-01 nginx: nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
Jan  2 14:37:09 CentOS7-01 nginx: nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
Jan  2 14:37:10 CentOS7-01 systemd: Can't open PID file /run/nginx.pid (yet?) after start: No such file or directory
Jan  2 14:38:40 CentOS7-01 systemd: nginx.service start operation timed out. Terminating.
Jan  2 14:38:40 CentOS7-01 systemd: Failed to start The nginx HTTP and reverse proxy server.
Jan  2 14:38:40 CentOS7-01 systemd: Unit nginx.service entered failed state.
Jan  2 14:38:40 CentOS7-01 systemd: nginx.service failed.

# 問(wèn)題排查
根據(jù)報(bào)錯(cuò)提示是由于找不到/run/nginx.pid文件導(dǎo)致的nginx啟動(dòng)失敗,來(lái)看一下nginx服務(wù)的service文件和主配置文件中定義的PID文件路徑
[root@CentOS7-01 src]#grep "^PID" /usr/lib/systemd/system/nginx.service 
PIDFile=/run/nginx.pid
[root@CentOS7-01 src]#grep -w "pid" /apps/nginx/conf/nginx.conf
#pid        logs/nginx.pid;
可以發(fā)現(xiàn)它倆的路徑并不是同一個(gè),而使用systemctl來(lái)啟動(dòng)nginx時(shí),會(huì)去找service文件中定義的PID文件路徑,但在加載主配置文件時(shí)發(fā)現(xiàn)默認(rèn)定義的PID文件路徑是logs/nginx.pid,并且也沒(méi)有具體定義PID文件的路徑和service文件中定義的是同一個(gè),故報(bào)此錯(cuò)誤。

# 解決方法
a.在主配置文件中定義pid文件的絕對(duì)路徑
[root@CentOS7-01 src]#vim /apps/nginx/conf/nginx.conf
pid /run/nginx.pid;

或

b.在nginx服務(wù)的service文件中指定默認(rèn)定義的pid文件的絕對(duì)路徑
[root@CentOS7-01 src]#vim /usr/lib/systemd/system/nginx.service 
PIDFile=/apps/nginx/logs/nginx.pid

然后再次啟動(dòng)服務(wù)即可

當(dāng)前名稱:Nginx基礎(chǔ)
網(wǎng)頁(yè)網(wǎng)址:http://chinadenli.net/article28/gsgejp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站App設(shè)計(jì)、Google、面包屑導(dǎo)航外貿(mào)建站、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司