nginx 應(yīng)用

了解nginx

參考文檔:http://www.nginx.cn/doc/

nginx是一款高性能的HTTP和反向代理服務(wù)器軟件饭弓,也是一個(gè)IMAP/POP3/SMTP代理服務(wù)器,可以運(yùn)行在Unix, GNU/Linux,BSD,MacOS x,以及Windows等操作系統(tǒng)中狼忱。

Nginx與Apache的異同

相同點(diǎn):

都是一個(gè)HTTP服務(wù)器軟件棵磷。支持正风秤、反向代理,虛擬主機(jī)缤弦,url重寫(xiě)领迈,壓縮傳輸碍沐,SSL加密傳輸?shù)取?/p>

不同點(diǎn):

Apache處理速度很慢,且占用很多內(nèi)存資源累提,而Nginx卻恰恰相反尘喝。

nginx安裝

下載地址:http://nginx.org/en/download.html

centos6 nginx 安裝?

https://www.cnblogs.com/yaoximing/p/6068622.html

Mac nginx 安裝

參考地址:https://www.cnblogs.com/meng1314-shuai/p/8335140.html

步驟:

1、查詢(xún)要安裝的軟件是否存在

brew search nginx ?

2刻恭、查看nginx是否安裝

brew info nginx


顯示本地已安裝nginx,版本1.15.3鞍匾,未安裝執(zhí)行第三步骑科。

3、安裝nginx

brew install nginx

4咆爽、查看nginx安裝目錄(是否如info所說(shuō))

open /usr/local/etc/nginx/

open /usr/local/Cellar/nginx ? ? //其實(shí)這個(gè)才是nginx被安裝到的目錄

5置森、啟動(dòng)nginx符糊,終端輸入如下命令:

nginx

沒(méi)有報(bào)錯(cuò)即為啟動(dòng)成功男娄。

6、打開(kāi)瀏覽器訪問(wèn)localhost:8080, 如出現(xiàn)以下界面模闲,說(shuō)明安裝成功


Nginx命令參數(shù)

nginx -t:測(cè)試配置文件是否正確

nginx -s reload, 作用:加載最新配置

nginx -s stop,作用:立即停止?

nginx -s quit尸折,作用:優(yōu)雅停止 (當(dāng)前存在訪問(wèn),直到訪問(wèn)結(jié)束才停止)

nginx -s reopen橄浓,作用:重新打開(kāi)日志

nginx 配置

在nginx.conf的注釋符號(hào)位#

nginx文件結(jié)構(gòu):


1收擦、全局塊:配置影響nginx全局的指令。一般有運(yùn)行nginx服務(wù)器的用戶組泪勒,nginx進(jìn)程pid存放路徑宴猾,日志存放路徑,配置文件引入沦辙,允許生成worker process數(shù)等讹剔。

2油讯、events塊:配置影響nginx服務(wù)器或與用戶的網(wǎng)絡(luò)連接。有每個(gè)進(jìn)程的最大連接數(shù)陌兑,選取哪種事件驅(qū)動(dòng)模型處理連接請(qǐng)求由捎,是否允許同時(shí)接受多個(gè)網(wǎng)路連接,開(kāi)啟多個(gè)網(wǎng)絡(luò)連接序列化等软驰。

3、http塊:可以嵌套多個(gè)server纠吴,配置代理慧瘤,緩存,日志定義等絕大多數(shù)功能和第三方模塊的配置。如文件引入蹬音,mime-type定義著淆,日志自定義,是否使用sendfile傳輸文件独泞,連接超時(shí)時(shí)間苔埋,單連接請(qǐng)求數(shù)等。

4荞膘、server塊:配置虛擬主機(jī)的相關(guān)參數(shù)玉工,一個(gè)http中可以有多個(gè)server。

5屠升、location塊:配置請(qǐng)求的路由狭郑,以及各種頁(yè)面的處理情況。

示例配置文件

########### 每個(gè)指令必須有分號(hào)結(jié)束微服。#################

#user administrator administrators;? #配置使用用戶或者組,默認(rèn)為nobody nobody糙麦。

worker_processes 2;? #允許生成的進(jìn)程數(shù)丛肮,默認(rèn)為1,CPU數(shù)量*核數(shù),通常等于CPU數(shù)量或者2倍于CPU

#pid /nginx/pid/nginx.pid;? #指定nginx進(jìn)程運(yùn)行文件存放地址

error_log log/error.log debug;? #制定日志路徑焚廊,級(jí)別习劫。這個(gè)設(shè)置可以放入全局塊,http塊袒餐,server塊谤狡,級(jí)別以此為:debug|info|notice|warn|error|crit|alert|emerg

events {

? ? accept_mutex on;? #設(shè)置網(wǎng)路連接序列化,防止驚群現(xiàn)象發(fā)生焰宣,默認(rèn)為on

? ? multi_accept on;? #設(shè)置一個(gè)進(jìn)程是否同時(shí)接受多個(gè)網(wǎng)絡(luò)連接捕仔,默認(rèn)為off

? ? #use epoll;? ? ? #事件驅(qū)動(dòng)模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport

? ? worker_connections? 1024;? ? #最大連接數(shù)闸天,默認(rèn)為512

}

http {

? ? include? ? ? mime.types;? #文件擴(kuò)展名與文件類(lèi)型映射表

? ? default_type? application/octet-stream; #默認(rèn)文件類(lèi)型斜做,默認(rèn)為text/plain

? ? #access_log off; #取消服務(wù)日志? ?

? ? log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定義格式

? ? access_log log/access.log myFormat;? #combined為日志格式的默認(rèn)值

? ? sendfile on;? #允許sendfile方式傳輸文件瓤逼,默認(rèn)為off,可以在http塊贷帮,server塊诱告,location塊。

? ? sendfile_max_chunk 100k;? #每個(gè)進(jìn)程每次調(diào)用傳輸數(shù)量不能大于設(shè)定的值锄禽,默認(rèn)為0,即不設(shè)上限沃但。

? ? keepalive_timeout 65;? #連接超時(shí)時(shí)間宵晚,默認(rèn)為75s,可以在http淤刃,server逸贾,location塊。

? ? #gzip on; #開(kāi)啟gzip壓縮

? ?#charset gb2321; #設(shè)置字符編碼

? ? upstream mysvr {?

? ? ? server 127.0.0.1:7878;

? ? ? server 192.168.10.121:3333 backup;? #熱備

? ? }

? ? error_page 404 https://www.baidu.com; #錯(cuò)誤頁(yè)

? ? server {

? ? ? ? keepalive_requests 120; #單連接請(qǐng)求上限次數(shù)。

? ? ? ? listen? ? ? 4545;? #監(jiān)聽(tīng)端口

? ? ? ? server_name? 127.0.0.1;? #監(jiān)聽(tīng)地址? ? ?

? ? ? ? location? ~*^.+$ {? ? ? #請(qǐng)求的url過(guò)濾据沈,正則匹配锌介,~為區(qū)分大小寫(xiě),~*為不區(qū)分大小寫(xiě)隆敢。

? ? ? ? ? #root path;? #根目錄

? ? ? ? ? #index vv.txt;? #設(shè)置默認(rèn)頁(yè)

? ? ? ? ? proxy_pass? http://mysvr;? #請(qǐng)求轉(zhuǎn)向mysvr 定義的服務(wù)器列表

? ? ? ? ? deny 127.0.0.1;? #拒絕的ip

? ? ? ? ? allow 172.18.5.54; #允許的ip? ? ? ? ?

? ? ? ? }

? ? }

}

日志格式設(shè)置崔慧。

$remote_addr與$http_x_forwarded_for用以記錄客戶端的ip地址;

$remote_user:用來(lái)記錄客戶端用戶名稱(chēng)温自;

$time_local:?用來(lái)記錄訪問(wèn)時(shí)間與時(shí)區(qū)皇钞;

$request:?用來(lái)記錄請(qǐng)求的url與http協(xié)議;

$status:?用來(lái)記錄請(qǐng)求狀態(tài)馆里;成功是200,

$body_bytes_sent?:記錄發(fā)送給客戶端文件主體內(nèi)容大斜摺慢哈;

$http_referer:用來(lái)記錄從那個(gè)頁(yè)面鏈接訪問(wèn)過(guò)來(lái)的卵贱;

$http_user_agent:記錄客戶瀏覽器的相關(guān)信息;

nginx之location配置

語(yǔ)法規(guī)則:location [=|~|~*|^~] /uri/ { … }

=?開(kāi)頭表示精確匹配?

^~?開(kāi)頭表示uri以某個(gè)常規(guī)字符串開(kāi)頭兰绣,理解為匹配 url路徑即可编振。

~開(kāi)頭表示區(qū)分大小寫(xiě)的正則匹配。

~*開(kāi)頭表示不區(qū)分大小寫(xiě)的正則匹配臀玄。

!~和!~*分別為區(qū)分大小寫(xiě)不匹配及不區(qū)分大小寫(xiě)不匹配?的正則畅蹂。

/?通用匹配,任何請(qǐng)求都會(huì)匹配到累贤。

多個(gè)location配置的情況下匹配順序?yàn)椋?br>

首先匹配 =少漆,其次匹配^~, 其次是按文件中順序的正則匹配,最后是交給 / 通用匹配渗磅。當(dāng)有匹配成功時(shí)候检访,停止匹配,按當(dāng)前匹配規(guī)則處理請(qǐng)求风响。

location?=?/?{??

???#規(guī)則A??

}??

location?=?/login?{??

???#規(guī)則B??

}??

location?^~?/static/?{??

???#規(guī)則C??

}??

location?~?\.(gif|jpg|png|js|css)$?{??

???#規(guī)則D??

}??

location?~*?\.png$?{??

???#規(guī)則E??

}??

location?!~?\.xhtml$?{??

???#規(guī)則F??

}??

location?!~*?\.xhtml$?{??

???#規(guī)則G??

}??

location?/?{??

???#規(guī)則H??

}??

那么產(chǎn)生的效果如下:

訪問(wèn)根目錄/状勤, 比如http://localhost/ 將匹配規(guī)則A

訪問(wèn) http://localhost/login 將匹配規(guī)則B,

http://localhost/register 則匹配規(guī)則H

訪問(wèn) http://localhost/static/a.html 將匹配規(guī)則C

訪問(wèn) http://localhost/a.gif, http://localhost/b.jpg 將匹配規(guī)則D和規(guī)則E密似,但是規(guī)則D順序優(yōu)先葫盼,規(guī)則E不起作用,而 http://localhost/static/c.png 則優(yōu)先匹配到 規(guī)則C

訪問(wèn) http://localhost/a.PNG 則匹配規(guī)則E抛猫, 而不會(huì)匹配規(guī)則D孩灯,因?yàn)橐?guī)則E不區(qū)分大小寫(xiě)。

訪問(wèn) http://localhost/a.xhtml 不會(huì)匹配規(guī)則F和規(guī)則G败匹,http://localhost/a.XHTML不會(huì)匹配規(guī)則G讥巡,因?yàn)椴粎^(qū)分大小寫(xiě)欢顷。規(guī)則F,規(guī)則G屬于排除法,符合匹配規(guī)則但是不會(huì)匹配到外里,所以想想看實(shí)際應(yīng)用中哪里會(huì)用到。

訪問(wèn) http://localhost/category/id/1111 則最終匹配到規(guī)則H鳖链,因?yàn)橐陨弦?guī)則都不匹配墩莫,這個(gè)時(shí)候應(yīng)該是nginx轉(zhuǎn)發(fā)請(qǐng)求給后端應(yīng)用服務(wù)器狂秦,比如FastCGI(php),tomcat(jsp)侧啼,nginx作為方向代理服務(wù)器存在。

location常見(jiàn)配置指令皮壁,alias哪审、root、proxy_pass

1滴须、【alias】——?jiǎng)e名配置茉稠,用于訪問(wèn)文件系統(tǒng),在匹配到location配置的URL路徑后铭污,指向【alias】配置的路徑膀篮。如:

location /test/

{

? ? alias/first/second/img/;

}

即:請(qǐng)求/test/1.jpg(省略了協(xié)議與域名)誓竿,將會(huì)返回文件/first/second/img/1.jpg。

2筷屡、【root】——根路徑配置毙死,用于訪問(wèn)文件系統(tǒng),在匹配到location配置的URL路徑后确封,指向【root】配置的路徑再菊,并把location配置路徑附加到其后。如:

location /test/

{

? ? root /first/second/img/;

}

即:請(qǐng)求/test/1.jpg(省略了協(xié)議與域名)秉剑,將會(huì)返回文件/first/second/img/test/1.jpg稠诲,相較于alias候址,使用root會(huì)把/test/附加到根目錄之后岗仑。

3聚请、【proxy_pass】——反向代理配置,用于代理請(qǐng)求炸卑,適用于前后端負(fù)載分離或多臺(tái)機(jī)器煤傍、服務(wù)器負(fù)載分離的場(chǎng)景蚯姆,在匹配到location配置的URL路徑后,轉(zhuǎn)發(fā)請(qǐng)求到【proxy_pass】配置的URL疙驾,是否會(huì)附加location配置路徑與【proxy_pass】配置的路徑后是否有"/"有關(guān)郭毕,有"/"則不附加,如:

location /test/

{

? ? proxy_pass http://127.0.0.1:8080/;

}

即:請(qǐng)求/test/1.jpg(省略了協(xié)議與域名)扳肛,將會(huì)被nginx轉(zhuǎn)發(fā)請(qǐng)求到http://127.0.0.1:8080/1.jpg(未附加/test/路徑)乘碑。

location /test/

{

? ? proxy_pass http://127.0.0.1:8080;

}

即:請(qǐng)求/test/1.jpg(省略了協(xié)議與域名)蝉仇,將會(huì)被nginx轉(zhuǎn)發(fā)請(qǐng)求到http://127.0.0.1:8080/test/1.jpg(附加/test/路徑)殖蚕。

location/test/

{

? ? proxy_pass http://127.0.0.1:8080/img;

}

即:請(qǐng)求/test/1.jpg(省略了協(xié)議與域名),將會(huì)被nginx轉(zhuǎn)發(fā)請(qǐng)求到http://127.0.0.1:8080/img1.jpg(未附加/test/路徑害驹,但附加了/test/之后的路徑)蛤育。

解決nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed錯(cuò)誤?

解決方法:

使用nginx -c的參數(shù)指定nginx.conf文件的位置

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市腋么,隨后出現(xiàn)的幾起案子亥揖,更是在濱河造成了極大的恐慌费变,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扛稽,死亡現(xiàn)場(chǎng)離奇詭異滑负,居然都是意外死亡橙困,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)辟狈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)哼转,“玉大人槽华,你說(shuō)我怎么就攤上這事∮度兀” “怎么了亲雪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵义辕,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我璧函,道長(zhǎng),這世上最難降的妖魔是什么蘸吓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任美澳,我火速辦了婚禮制跟,結(jié)果婚禮上雨膨,老公的妹妹穿的比我還像新娘。我一直安慰自己撒妈,他們只是感情好排监,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布舆床。 她就那樣靜靜地躺著,像睡著了一般谷暮。 火紅的嫁衣襯著肌膚如雪盛垦。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音蝶俱,去河邊找鬼。 笑死跷乐,一個(gè)胖子當(dāng)著我的面吹牛愕提,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播浅侨,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼如输,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼不见!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起缎谷,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灶似,失蹤者是張志新(化名)和其女友劉穎酪惭,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體砌创,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甥厦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年刀疙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谦秧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锥累,死狀恐怖集歇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情际歼,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布吕粗,位于F島的核電站颅筋,受9級(jí)特大地震影響输枯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肢簿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一池充、第九天 我趴在偏房一處隱蔽的房頂上張望缎讼。 院中可真熱鬧,春花似錦卧惜、人聲如沸夹纫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)舰讹。三九已至茅姜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間月匣,已是汗流浹背钻洒。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锄开,地道東北人素标。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像萍悴,于是被迫代替她去往敵國(guó)和親寓免。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

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