1.Nginx概述
Nginx (engine x) 是一個(gè)高性能的HTTP和反向代理web服務(wù)器,同時(shí)也提供了IMAP/POP3/SMTP服務(wù)。
Nginx是由伊戈?duì)枴べ愃饕驗(yàn)槎砹_斯訪問(wèn)量第二的Rambler.ru站點(diǎn)開(kāi)發(fā)的,第一個(gè)公開(kāi)版本0.1.0發(fā)布于2004年10月4日。
其將源代碼以類(lèi)BSD許可證的形式發(fā)布,因它的穩(wěn)定性、豐富的功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名。2011年6月1日,nginx 1.0.4發(fā)布。
Nginx是一款輕量級(jí)的Web服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在BSD-like 協(xié)議下發(fā)行。
其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力在同類(lèi)型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好,中國(guó)大陸使用nginx網(wǎng)站用戶(hù)有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。
2.Nginx安裝
2.1下載Nginx
Nginx的官網(wǎng)下載地址是:http://nginx.org/en/download.html??梢渣c(diǎn)擊進(jìn)入,看到如圖所示頁(yè)面:

其中紅圈圈住的代表當(dāng)前最新的穩(wěn)定正式版本,我們也下載此版本。因?yàn)槭窃赾entos上面安裝,我們下載Linux版本:

下載完后,上傳到服務(wù)器上面,比如我們上傳的路徑為 /packages。
2.2 環(huán)境準(zhǔn)備
安裝前先要確定Linux的內(nèi)核版本要在2.6以上,只有2.6之后才支持epool ,在此之前使用select或pool多路復(fù)用的IO模型,無(wú)法解決高并發(fā)壓力的問(wèn)題。通過(guò)命令uname -a 即可查看:

另外Nginx需要GCC編譯器,用來(lái)編譯C語(yǔ)言環(huán)境,Nginx不會(huì)提供二進(jìn)制可執(zhí)行程序,只能下載源碼進(jìn)行編譯;
另外還需要PCRE庫(kù),是專(zhuān)門(mén)用來(lái)做正則表達(dá)式的,Nginx里面很多地方都用到了正則表達(dá)式,因此需要進(jìn)行安裝;
另外還需要zlib庫(kù),zlib庫(kù)用于對(duì)HTTP包的內(nèi)容做gzip格式的壓縮,如果我們?cè)趎ginx.conf里配置了gzip on,并指定對(duì)于某些類(lèi)型(content-type)的HTTP響應(yīng)使用gzip來(lái)進(jìn)行壓縮以減少網(wǎng)絡(luò)傳輸量;
另外還需要OpenSSL開(kāi)發(fā)庫(kù),如果我們的服務(wù)器不只是要支持HTTP,還需要在更安全的SSL協(xié)議上傳輸HTTP,那么就需要擁有OpenSSL了。另外,如果我們想使用MD5、SHA1等散列函數(shù),那么也需要安裝它;
上面幾個(gè)庫(kù)都是Nginx 基礎(chǔ)功能所必需的,為簡(jiǎn)單起見(jiàn)我們可以通過(guò)yum 命令統(tǒng)一安裝:
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel
2.3解壓安裝
安裝完畢后,解壓nginx,在對(duì)應(yīng)的目錄/packages中,有我們下載的包:

執(zhí)行解壓命令:
tar -zxvf nginx-1.16.0.tar.gz
可以看到解壓到了目錄下面:

進(jìn)入nginx文件夾,執(zhí)行命令:
./configure
然后執(zhí)行命令:
make
然后執(zhí)行命令:
make install
執(zhí)行完成之后nginx 運(yùn)行文件 就會(huì)被安裝在/usr/local/nginx下。

進(jìn)入安裝目錄:
cd /usr/local/nginx

可以看到目錄下有四個(gè)文件夾:
- conf是配置目錄
- html是靜態(tài)資源目錄
- logs是日志
- sbin是一些執(zhí)行命令
3.常用命令
3.1啟動(dòng)Nginx
下面介紹幾種啟動(dòng)方式:
-
./sbin/nginx
默認(rèn)方式啟動(dòng) -
./sbing/nginx -c /tmp/nginx.conf
指定配置文件啟動(dòng) -
./sbin/nginx -p /usr/local/nginx/
指定nginx程序目錄啟動(dòng)
我們啟動(dòng)nginx,訪問(wèn)頁(yè)面,查看是否啟動(dòng)成功:

可以看到啟動(dòng)成功!
注意,nginx默認(rèn)使用的端口是80,如果端口已經(jīng)被占據(jù),那么需要修改默認(rèn)端口!默認(rèn)的配置在安裝文件夾下的conf文件夾下的ngixn.conf文件中,目錄為 /usr/local/nginx/conf ,修改端口:

啟動(dòng)可以看到端口改為8080:

3.2停止Nginx
介紹幾種停止方式:
-
./sbin/nginx -s stop
快速停止(直接暴力停止) -
./sbin/nginx -s quit
優(yōu)雅停止(不接收新請(qǐng)求,處理完現(xiàn)有請(qǐng)求后停止)
3.3.其他命令
-
./sbin/nginx -s reload
熱裝載配置文件 ,不用停止可以刷新配置(一定要熟練,這是用的最多的命令) -
./sbin/nginx -s reopen
重新打開(kāi)日志文件(下面單說(shuō)) -
./sbin/nginx -t
檢測(cè)當(dāng)前使用的是哪個(gè)配置文件,配置是否正確(可以在配置文件加點(diǎn)亂碼測(cè)試一下)(這個(gè)命令也經(jīng)常使用)
4.日志重寫(xiě)
啟動(dòng)完后,我們可以看到nginx有兩個(gè)進(jìn)程:一個(gè)master,一個(gè)worker

master進(jìn)程主要用來(lái)做熱裝載更新或者日志之類(lèi)的。
worker進(jìn)程才是真正執(zhí)行客戶(hù)端連接的進(jìn)程,為了提高性能,worker進(jìn)程是可以設(shè)置成多個(gè)的,后面文章再說(shuō)。
上面有個(gè)命令 ./sbin/nginx -s reopen 是重新打開(kāi)日志文件,什么意思呢?
下面做個(gè)演示,首先查看我們?nèi)罩灸夸浵旅娴娜罩疚募笮。?/p>

然后打開(kāi)頁(yè)面,連續(xù)刷新幾次,再查看大小:

可以看到access.log文件變大了,那么我們把現(xiàn)在的日志文件備份一下,然后新建一個(gè)access.log文件:
cd /usr/local/nginx/logs/
mv access.log access.log.bak
然后新建一個(gè)文件命名為access.log:

現(xiàn)在再次刷新頁(yè)面,然后查看哪個(gè)日志文件變大了:

發(fā)現(xiàn)不是新的日志文件變大了,而是老的備份文件,說(shuō)明日志還是寫(xiě)到老文件里面去了,這是什么原因呢?
nginx把日志寫(xiě)入日志文件的時(shí)候,并不是根據(jù)文件路徑去找文件,而是根據(jù)日志文件的句柄,而句柄中記錄了使用哪個(gè)日志文件,不會(huì)因?yàn)槲募拿指淖兌淖儭?/p>
這個(gè)時(shí)候要寫(xiě)使用新建的日志文件,必須使用 reopen 命令從新打開(kāi)文件,相當(dāng)于從新切換句柄中的日志文件引用,現(xiàn)在執(zhí)行命令:
./sbin/nginx -s reopen
然后再刷新頁(yè)面,可以看到日志寫(xiě)入到新文件中:

用上面這種方式可以進(jìn)行日志切割備份。
文章轉(zhuǎn)載自:http://www.itdecent.cn/p/99aac00aa3b7