【Nginx那點事兒】之 ①【 Nginx入門】

一炮沐、Nginx為什么受青睞

? 在介紹Nginx具體的安裝、配置以及原理之前先聊聊概念常識問題回怜。那就是目前為什么Nginx深受青睞大年?那我們先從Nginx是什么開始聊起换薄。

1.Nginx是什么

  • 簡單介紹

    Nginx來自于俄羅斯,是在RamblerMedia工作的Igor Sysoev使用C語言編寫而成的跨平臺輕量級高性能的Web服務(wù)器翔试。Nginx可以運行在Linux轻要、FreeBSDSolaris(Sun公司的類Unix OS)垦缅、MacOS冲泥、以及Windows等操作系統(tǒng)。操作系統(tǒng)的不同壁涎,也給Nginx帶來了一些好處凡恍,Nginx會使用當(dāng)前操作系統(tǒng)中特有的一些高效API來提高自身的性能。

  • Nginx和它的對手們

    Nginx的對手們有Apache怔球、Lighttpd嚼酝、TomcatJetty竟坛、IIS闽巩,它們同為Web服務(wù)器:具備Web服務(wù)器的基本功能;基于Rest架構(gòu)風(fēng)格担汤,以統(tǒng)一資源描述符(URI)統(tǒng)一資源定位符(URL)作為溝通依據(jù)涎跨,通過HTTP為瀏覽器等Client程序提供各種網(wǎng)絡(luò)服務(wù)。

    但是崭歧,這些Web服務(wù)器呢隅很,都多多少少因為各自的定位與發(fā)展方向都不盡相同,使得每一款Web服務(wù)器都各有特色:

    ? 1.Tomcat率碾、Jetty:都是面向Java語言設(shè)計的叔营。但是它們在性能方面與Nginx沒有什么可比性,因為這兩款服務(wù)器都是重量級選手播掷∩蟊啵可能有伙伴會很疑惑撼班,我已經(jīng)用Tomcat跑起服務(wù)歧匈,同樣配置后可以直接訪問為什么還要在加層外套Nginx,對于這個問題砰嘁,在后邊對這一點進(jìn)行詳細(xì)的分析件炉。【】

    ? 2.IIS:這位選手呢矮湘,來自于微軟家族斟冕。然后特點大家可能就很清楚了,它只能在Windows OS運行(不過網(wǎng)上也有工具可以把它運行在LinuxOS中缅阳,但是并不是很完美哦)磕蛇。可能拉低它顏值的就是穩(wěn)定性性能了,Windows OS作為服務(wù)器的話秀撇,穩(wěn)定性和部分性能都不能和類Unix OS進(jìn)行媲美超棺,所以呢,在高性能Web服務(wù)器的場合中呵燕,IIS可能就要被“淘汰”了棠绘。

    ? 3.Apache:這是一位壓軸級選手,是發(fā)展周期最長的再扭,毫無疑問是世界第一大Web服務(wù)器氧苍,在2012年遙遙領(lǐng)先其他選手。它畢竟有很多優(yōu)秀的地方:穩(wěn)定泛范、開源让虐、跨平臺等。但是美中不足的是敦跌,它被設(shè)計成為了重量級澄干、不支持高并發(fā)Web服務(wù)器。如果有數(shù)以萬計的HTTP請求同時訪問柠傍,服務(wù)器就會面臨大量內(nèi)存消耗的問題麸俘,操作系統(tǒng)也會跟著收到牽連,畢竟Apache的進(jìn)程做進(jìn)程間切換時會給服務(wù)器的CPU帶來重大壓力惧笛,同時會伴隨著響應(yīng)效率降低从媚,這致命的一擊,導(dǎo)致這位來自“貴族世家”的選手在高性能Web服務(wù)器的舞臺上沒有了地位患整。

    ? 4.Lighttpd:Nginx同樣是輕量級拜效、高性能的Web服務(wù)器。但是它并沒有得到國內(nèi)開發(fā)者的鐘愛各谚,而是被歐美的開發(fā)者們所追捧紧憾。

  • 恩寵--Nginx

    Nginx的代碼也是開源的而且是最自由的2-clause BSD-like license許可證。Nginx使用的架構(gòu)是基于事件驅(qū)動的昌渤,能夠并發(fā)處理百萬級別的TCP連接赴穗。由于Nginx的高度模塊化和具有最自由的許可證,讓Nginx的第三方模塊擴(kuò)展功能更加充實膀息。優(yōu)秀的設(shè)計還帶來了極佳的穩(wěn)定性體驗般眉。所以,Nginx大量應(yīng)用于大流量的網(wǎng)站來高效處理大規(guī)模高并發(fā)連接潜支。種種跡象表明甸赃,Nginx在性能方面很出色。

2.Nginx的特點

  • 更快

    快主要體現(xiàn)在兩方面:①在正常的情況下冗酿,單次請求會得到更快的響應(yīng)埠对;②在數(shù)以萬計的并發(fā)請求中络断,Nginx可以比其他Web服務(wù)器更快的響應(yīng)請求。

  • 高擴(kuò)展性

    Nginx的高度模塊化決定了其具有高擴(kuò)展性项玛。它完全是由多個不同功能妓羊、不同層次、不同類型以及耦合度極低的模塊組合而成稍计。它的模塊都是嵌入到二進(jìn)制文件中執(zhí)行躁绸,使得第三方開發(fā)的模塊也一樣完美支持性能。所以高并發(fā)的網(wǎng)站完全可以根據(jù)自身項目業(yè)務(wù)特性定制屬于自己的模塊臣嚣。

  • 高可靠性

    這個特點應(yīng)該是選擇Web服務(wù)器最基本的條件净刮。Nginx的穩(wěn)定性,大家有目共睹硅则。國內(nèi)多家高流量并發(fā)的網(wǎng)站在核心的服務(wù)器上大規(guī)模使用Nginx淹父。官方提供的常用模塊是非常穩(wěn)定的,每一個Worker進(jìn)程都相對獨立怎虫,把耦合性降至最低暑认。master進(jìn)程在其中一個Worker進(jìn)程出錯時可以快速“拉起”新的Worker子進(jìn)程提供相應(yīng)的服務(wù)。

  • 低內(nèi)存消耗

    據(jù)數(shù)據(jù)測試大审,一般情況下蘸际,1W個不活躍的HTTP Keep-Alive連接在Nginx中消耗只有2.5MB的內(nèi)存。(這也是Nginx能夠支持高并發(fā)連接的基礎(chǔ))

  • 單機(jī)支持10W+的并發(fā)連接

    由于現(xiàn)在是海量數(shù)據(jù)時代徒扶,高并發(fā)無疑成為大家青睞的對象粮彤。理論上,Nginx支持的并發(fā)連接數(shù)量取決于內(nèi)存姜骡,10W+的并發(fā)連接并沒有到極限导坟。但是,能否及時處理更多的并發(fā)連接應(yīng)該取決于項目業(yè)務(wù)的需求圈澈。

  • 熱部署

    master管理進(jìn)程和Worker進(jìn)程是相互隔離的惫周,這使得Nginx能夠彰顯熱部署的能力。通俗點來說康栈,就是完全可以在724h不停止服務(wù)正常工作的情況下递递,可以升級Nginx*的可執(zhí)行文件、更新配置選項谅将、更新日志文件等功能操作漾狼。

  • 最自由的BSD許可協(xié)議

    俗話說“眾人拾柴火焰高”重慢。也正是BSD許可協(xié)議帶來的極大優(yōu)勢饥臂,為Nginx提供更強(qiáng)勁的發(fā)展動力。

綜上所述似踱,選擇Nginx的核心理由還是由于它能在支持高并發(fā)請求的同時保持高效的服務(wù)隅熙。

二稽煤、Nginx的安裝

1.源碼安裝

在正式安裝Nginx前需要保證服務(wù)器主機(jī)已經(jīng)安裝有編譯環(huán)境GCC開發(fā)庫之類的環(huán)境。

  • GCC編譯環(huán)境工具安裝

Ubuntu OS編譯環(huán)境使用如下命令:

apt-get install build-essential
apt-get install libtool

②CentOS編譯環(huán)境使用如下命令:

yum install -y gcc automake autoconf libtool make
yum install -y gcc-c++

安裝完成編譯環(huán)境囚戚,就可以著手準(zhǔn)備Nginx所需要的類庫PCRE庫酵熙、zlib庫OpenSSL開發(fā)庫驰坊。

  • PCRE庫安裝

首先介紹一下PCRE庫的作用匾二,為NginxHTTP模塊提供解析正則表達(dá)式的基礎(chǔ)。這里直接通過下載源碼的方式進(jìn)行編譯安裝拳芙。根據(jù)需要的版本在PCRE源碼中選擇URL然后用下邊命令進(jìn)行下載

wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
## 現(xiàn)在完成后察藐,對源碼包進(jìn)行解壓
tar -xzvf pcre-8.42.tar.gz
## 解壓完成進(jìn)入pcre-8.42目錄
cd pcre-8.42
## 執(zhí)行配置
./configure
## 進(jìn)行編譯并安裝
make 
make install
  • Zlib庫安裝

Zlib庫主要是針對HTTP包的內(nèi)容做gzip格式的壓縮凌彬。例如琼梆,Nginx的配置nginx.conf文件中配置gzip on览祖。Zlib-1.2.11下載

## 使用Wget命令下載源碼
wget http://zlib.net/zlib-1.2.11.tar.gz
## 進(jìn)行解壓
tar -xzvf zlib-1.2.11.tar.gz
## 進(jìn)入zlib目錄進(jìn)行配置編譯安裝操作
cd zlib-1.2.11
./configure
make 
make install
  • Openssl安裝

如果對版本沒有特殊要求洋机,OpenSSL我們采用命令安裝

## CentOS 安裝命令
yum install openssl openssl-devel
?
## Ubuntu/Debian 安裝命令
sudo apt-get install openssl        
sudo apt-get install libssl-devel  
  • Nginx安裝

首先去Nginx官網(wǎng)下載合適版本的源碼俭正。同時我們可以直接在服務(wù)器使用wget命令進(jìn)行下載晚伙。

wget http://nginx.org/download/nginx-1.14.0.tar.gz
## 解壓Nginx源碼
tar -xzvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
?
## 進(jìn)行配置項的配置:(以下只是選擇了編譯Nginx源碼時的部分配置選項)
 # --sbin-path: 指定了可執(zhí)行文件的放置路徑,默認(rèn)路徑在<prefix>/sbin/nginx
 # --conf-path: 指定了配置選項文件的放置路徑,默認(rèn)路徑在<prefix>/conf/nginx.conf
 # --pid-path: 指定了pid文件的放置路徑,默認(rèn)路徑在<prefix>/logs>nginx.pid
 # --with-http_ssl_module:安裝http_ssl_module豪硅,使得Nginx支持SSL協(xié)議值桩,保證HTTPS服務(wù)羡疗。
 # --with-pcre: 指定PCRE庫源碼的路徑染服,編譯Nginx時會進(jìn)入此路徑對源碼進(jìn)行編譯。
 # --with-zlib: 指定Zlib庫源碼的路徑叨恨,編譯Nginx時會進(jìn)入此路徑對源碼進(jìn)行編譯肌索。
./configure  \
--sbin-path=/usr/local/nginx/nginx \ 
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/opt/app/openet/oetal1/cheney/pcre-8.42 \
--with-zlib=/opt/app/openet/oetal1/cheney/zlib-1.2.11 
?
## 配置完成后進(jìn)行編譯安裝
make 
make install

安裝完成之后可以進(jìn)行簡單的測試,進(jìn)入配置的${--sbin-path}路徑下啟動Nginx特碳。

## 直接使用默認(rèn)配置執(zhí)行nginx可執(zhí)行文件啟動服務(wù)
/usr/local/nginx/sbin/nginx

在保證服務(wù)器主機(jī)端口可以訪問的情況下诚亚,使用瀏覽器訪問主機(jī)IP地址,例如http://127.0.0.1午乓,可以看到Nginx服務(wù)的默認(rèn)主頁站宗。這就說明Nginx服務(wù)正常啟動了。然后可以根據(jù)項目具體的業(yè)務(wù)需求益愈,對Nginx進(jìn)行特殊配置進(jìn)行詳細(xì)定制梢灭。


Nginx的具體配置問題,下篇文章進(jìn)行詳細(xì)介紹蒸其。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末敏释,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子摸袁,更是在濱河造成了極大的恐慌钥顽,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件靠汁,死亡現(xiàn)場離奇詭異蜂大,居然都是意外死亡闽铐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門奶浦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兄墅,“玉大人,你說我怎么就攤上這事澳叉∠断蹋” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵成洗,是天一觀的道長扎瓶。 經(jīng)常有香客問我,道長泌枪,這世上最難降的妖魔是什么概荷? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮碌燕,結(jié)果婚禮上误证,老公的妹妹穿的比我還像新娘。我一直安慰自己修壕,他們只是感情好愈捅,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著慈鸠,像睡著了一般蓝谨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上青团,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天譬巫,我揣著相機(jī)與錄音,去河邊找鬼督笆。 笑死芦昔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的娃肿。 我是一名探鬼主播咕缎,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼料扰!你這毒婦竟也來了凭豪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤晒杈,失蹤者是張志新(化名)和其女友劉穎嫂伞,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡末早,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了说庭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片然磷。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖刊驴,靈堂內(nèi)的尸體忽然破棺而出姿搜,到底是詐尸還是另有隱情,我是刑警寧澤捆憎,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布舅柜,位于F島的核電站,受9級特大地震影響躲惰,放射性物質(zhì)發(fā)生泄漏致份。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一础拨、第九天 我趴在偏房一處隱蔽的房頂上張望氮块。 院中可真熱鬧,春花似錦诡宗、人聲如沸滔蝉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝠引。三九已至,卻和暖如春蛀柴,著一層夾襖步出監(jiān)牢的瞬間螃概,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工鸽疾, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留谅年,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓肮韧,卻偏偏與公主長得像融蹂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子弄企,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348