一看就會(huì)的Nginx學(xué)習(xí)教程(別告訴其他人)

前言

公司產(chǎn)品出現(xiàn)瓶頸?

公司項(xiàng)目剛剛上線(xiàn)的時(shí)候革答,并發(fā)量小战坤,用戶(hù)使用的少曙强,所以在低并發(fā)的情況下残拐,一個(gè)jar包啟動(dòng)應(yīng)用就夠了,然后內(nèi)部tomcat返回內(nèi)容給用戶(hù)碟嘴。


但是慢慢的溪食,使用我們平臺(tái)的用戶(hù)越來(lái)越多了,并發(fā)量慢慢增大了娜扇,這時(shí)候一臺(tái)服務(wù)器滿(mǎn)足不了我們的需求了错沃。


于是我們橫向擴(kuò)展,又增加了服務(wù)器雀瓢。這個(gè)時(shí)候幾個(gè)項(xiàng)目啟動(dòng)在不同的服務(wù)器上枢析,用戶(hù)要訪(fǎng)問(wèn),就需要增加一個(gè)代理服務(wù)器了刃麸,通過(guò)代理服務(wù)器來(lái)幫我們轉(zhuǎn)發(fā)和處理請(qǐng)求醒叁。


我們希望這個(gè)代理服務(wù)器可以幫助我們接收用戶(hù)的請(qǐng)求,然后將用戶(hù)的請(qǐng)求按照規(guī)則幫我們轉(zhuǎn)發(fā)到不同的服務(wù)器節(jié)點(diǎn)之上泊业。這個(gè)過(guò)程用戶(hù)是無(wú)感知的把沼,用戶(hù)并不知道是哪個(gè)服務(wù)器返回的結(jié)果,我們還希望他可以按照服務(wù)器的性能提供不同的權(quán)重選擇吁伺。保證最佳體驗(yàn)饮睬!所以我們使用了Nginx。

什么是Nginx篮奄?

Nginx (engine x) 是一個(gè)高性能的HTTP和反向代理web服務(wù)器捆愁,同時(shí)也提供了IMAP/POP3/SMTP服務(wù)割去。Nginx是由伊戈?duì)枴べ愃饕驗(yàn)槎砹_斯訪(fǎng)問(wèn)量第二的Rambler.ru站點(diǎn)(俄文:Рамблер)開(kāi)發(fā)的,第一個(gè)公開(kāi)版本0.1.0發(fā)布于2004年10月4日牙瓢。2011年6月1日劫拗,nginx 1.0.4發(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)易控妻、騰訊州袒、淘寶等。在全球活躍的網(wǎng)站中有12.18%的使用比率弓候,大約為2220萬(wàn)個(gè)網(wǎng)站郎哭。

Nginx 是一個(gè)安裝非常的簡(jiǎn)單、配置文件非常簡(jiǎn)潔(還能夠支持perl語(yǔ)法)菇存、Bug非常少的服務(wù)夸研。Nginx 啟動(dòng)特別容易,并且?guī)缀蹩梢宰龅?*24不間斷運(yùn)行依鸥,即使運(yùn)行數(shù)個(gè)月也不需要重新啟動(dòng)亥至。你還能夠不間斷服務(wù)的情況下進(jìn)行軟件版本的升級(jí)。

Nginx代碼完全用C語(yǔ)言從頭寫(xiě)成贱迟。官方數(shù)據(jù)測(cè)試表明能夠支持高達(dá) 50,000 個(gè)并發(fā)連接數(shù)的響應(yīng)姐扮。

Nginx作用?

Http代理衣吠,反向代理:作為web服務(wù)器最常用的功能之一茶敏,尤其是反向代理。

正向代理


反向代理


Nginx提供的負(fù)載均衡策略有2種:內(nèi)置策略和擴(kuò)展策略缚俏。內(nèi)置策略為輪詢(xún)惊搏,加權(quán)輪詢(xún),Ip hash袍榆。擴(kuò)展策略胀屿,就天馬行空,只有你想不到的沒(méi)有他做不到的包雀。

輪詢(xún)


加權(quán)輪詢(xún)


iphash對(duì)客戶(hù)端請(qǐng)求的ip進(jìn)行hash操作宿崭,然后根據(jù)hash結(jié)果將同一個(gè)客戶(hù)端ip的請(qǐng)求分發(fā)給同一臺(tái)服務(wù)器進(jìn)行處理,可以解決session不共享的問(wèn)題才写。


動(dòng)靜分離葡兑,在我們的軟件開(kāi)發(fā)中奖蔓,有些請(qǐng)求是需要后臺(tái)處理的,有些請(qǐng)求是不需要經(jīng)過(guò)后臺(tái)處理的(如:css讹堤、html吆鹤、jpg、js等等文件)洲守,這些不需要經(jīng)過(guò)后臺(tái)處理的文件稱(chēng)為靜態(tài)文件疑务。讓動(dòng)態(tài)網(wǎng)站里的動(dòng)態(tài)網(wǎng)頁(yè)根據(jù)一定規(guī)則把不變的資源和經(jīng)常變的資源區(qū)分開(kāi)來(lái),動(dòng)靜資源做好了拆分以后梗醇,我們就可以根據(jù)靜態(tài)資源的特點(diǎn)將其做緩存操作知允。提高資源響應(yīng)的速度。

目前叙谨,通過(guò)使用Nginx大大提高了我們網(wǎng)站的響應(yīng)速度温鸽,優(yōu)化了用戶(hù)體驗(yàn),讓網(wǎng)站的健壯性更上一層樓手负!

Nginx的安裝

windows下安裝

1涤垫、下載nginx

http://nginx.org/en/download.html 下載穩(wěn)定版本。
以nginx/Windows-1.16.1為例竟终,直接下載 nginx-1.16.1.zip蝠猬。
下載后解壓,解壓后如下:

2衡楞、啟動(dòng)nginx

有很多種方法啟動(dòng)nginx

(1)直接雙擊nginx.exe吱雏,雙擊后一個(gè)黑色的彈窗一閃而過(guò)

(2)打開(kāi)cmd命令窗口敦姻,切換到nginx解壓目錄下瘾境,輸入命令 nginx.exe ,回車(chē)即可

3镰惦、檢查nginx是否啟動(dòng)成功

直接在瀏覽器地址欄輸入網(wǎng)址 http://localhost:80 回車(chē)迷守,出現(xiàn)以下頁(yè)面說(shuō)明啟動(dòng)成功!

4旺入、配置監(jiān)聽(tīng)

nginx的配置文件是conf目錄下的nginx.conf兑凿,默認(rèn)配置的nginx監(jiān)聽(tīng)的端口為80,如果80端口被占用可以修改為未被占用的端口即可茵瘾。

當(dāng)我們修改了nginx的配置文件nginx.conf 時(shí)礼华,不需要關(guān)閉nginx后重新啟動(dòng)nginx,只需要執(zhí)行命令 nginx -s reload 即可讓改動(dòng)生效

5拗秘、關(guān)閉nginx

如果使用cmd命令窗口啟動(dòng)nginx圣絮, 關(guān)閉cmd窗口是不能結(jié)束nginx進(jìn)程的,可使用兩種方法關(guān)閉nginx

(1)輸入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)

(2)使用taskkill taskkill /f /t /im nginx.exe

  1. taskkill是用來(lái)終止進(jìn)程的雕旨,

  2. /f是強(qiáng)制終止 .

  3. /t終止指定的進(jìn)程和任何由此啟動(dòng)的子進(jìn)程扮匠。

  4. /im示指定的進(jìn)程名稱(chēng) .

linux下安裝

1捧请、安裝gcc

安裝 nginx 需要先將官網(wǎng)下載的源碼進(jìn)行編譯,編譯依賴(lài) gcc 環(huán)境棒搜,如果沒(méi)有 gcc 環(huán)境疹蛉,則需要安裝:

  1. yum install gcc-c++

2、PCRE pcre-devel 安裝

PCRE(Perl Compatible Regular Expressions) 是一個(gè)Perl庫(kù)力麸,包括 perl 兼容的正則表達(dá)式庫(kù)可款。nginx 的 http 模塊使用 pcre 來(lái)解析正則表達(dá)式,所以需要在 linux 上安裝 pcre 庫(kù)克蚂,pcre-devel 是使用 pcre 開(kāi)發(fā)的一個(gè)二次開(kāi)發(fā)庫(kù)筑舅。nginx也需要此庫(kù)。命令:

  1. yum install -y pcre pcre-devel

3陨舱、zlib 安裝

zlib 庫(kù)提供了很多種壓縮和解壓縮的方式翠拣, nginx 使用 zlib 對(duì) http 包的內(nèi)容進(jìn)行 gzip ,所以需要在 Centos 上安裝 zlib 庫(kù)游盲。

  1. yum install -y zlib zlib-devel

4误墓、OpenSSL 安裝
OpenSSL 是一個(gè)強(qiáng)大的安全套接字層密碼庫(kù),囊括主要的密碼算法益缎、常用的密鑰和證書(shū)封裝管理功能及 SSL 協(xié)議谜慌,并提供豐富的應(yīng)用程序供測(cè)試或其它目的使用。
nginx 不僅支持 http 協(xié)議莺奔,還支持 https(即在ssl協(xié)議上傳輸http)欣范,所以需要在 Centos 安裝 OpenSSL 庫(kù)。

  1. yum install -y openssl openssl-devel

5令哟、下載安裝包

手動(dòng)下載.tar.gz安裝包恼琼,地址:https://nginx.org/en/download.html

下載完畢上傳到服務(wù)器上 /root

6、解壓

  1. tar -zxvf nginx-1.18.0.tar.gz

  2. cd nginx-1.18.0

7屏富、配置

使用默認(rèn)配置晴竞,在nginx根目錄下執(zhí)行

  1. ./configure

  2. make

  3. make install

查找安裝路徑: whereis nginx

Nginx常用命令

  1. cd /usr/local/nginx/sbin/

  2. ./nginx 啟動(dòng)

  3. ./nginx -s stop 停止

  4. ./nginx -s quit 安全退出

  5. ./nginx -s reload 重新加載配置文件

  6. ps aux|grep nginx 查看nginx進(jìn)程

啟動(dòng)成功訪(fǎng)問(wèn) 服務(wù)器ip:80

注意:如何連接不上,檢查阿里云安全組是否開(kāi)放端口狠半,或者服務(wù)器防火墻是否開(kāi)放端口噩死!
相關(guān)命令:

  1. # 開(kāi)啟

  2. service firewalld start

  3. # 重啟

  4. service firewalld restart

  5. # 關(guān)閉

  6. service firewalld stop

  7. # 查看防火墻規(guī)則

  8. firewall-cmd --list-all

  9. # 查詢(xún)端口是否開(kāi)放

  10. firewall-cmd --query-port=8080/tcp

  11. # 開(kāi)放80端口

  12. firewall-cmd --permanent --add-port=80/tcp

  13. # 移除端口

  14. firewall-cmd --permanent --remove-port=8080/tcp

  15. #重啟防火墻(修改配置后要重啟防火墻)

  16. firewall-cmd --reload

  17. # 參數(shù)解釋

  18. 1、firwall-cmd:是Linux提供的操作firewall的一個(gè)工具神年;

  19. 2已维、--permanent:表示設(shè)置為持久;

  20. 3已日、--add-port:標(biāo)識(shí)添加的端口垛耳;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子艾扮,更是在濱河造成了極大的恐慌既琴,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泡嘴,死亡現(xiàn)場(chǎng)離奇詭異甫恩,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)酌予,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)磺箕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人抛虫,你說(shuō)我怎么就攤上這事松靡。” “怎么了建椰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵雕欺,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我棉姐,道長(zhǎng)屠列,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任伞矩,我火速辦了婚禮笛洛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乃坤。我一直安慰自己苛让,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布湿诊。 她就那樣靜靜地躺著狱杰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枫吧。 梳的紋絲不亂的頭發(fā)上浦旱,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天宇色,我揣著相機(jī)與錄音九杂,去河邊找鬼。 笑死宣蠕,一個(gè)胖子當(dāng)著我的面吹牛例隆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抢蚀,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼镀层,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起唱逢,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吴侦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后坞古,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體备韧,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年痪枫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了织堂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奶陈,死狀恐怖易阳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吃粒,我是刑警寧澤潦俺,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站徐勃,受9級(jí)特大地震影響黑竞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疏旨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一很魂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧檐涝,春花似錦遏匆、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至窃植,卻和暖如春帝蒿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背巷怜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工葛超, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人延塑。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓绣张,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親关带。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侥涵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容