Nginx初步學(xué)習(xí)

? ? ? ? 實(shí)習(xí)入職第一天的時(shí)候,在同事的幫助下安裝了N多軟件和工具。然鵝作為一個(gè)初入工作的菜雞翼闹,很多工具之前沒有接觸過枫振,所以后面進(jìn)行項(xiàng)目相關(guān)配置時(shí)都是直接copy的組內(nèi)前輩的配置文件喻圃,但是對這些工具的作用和一些配置文件的意義很迷茫。這些天對這些工具進(jìn)行了一些簡單的學(xué)習(xí)和了解粪滤,下面是整理的一些Nginx相關(guān)的基礎(chǔ)內(nèi)容斧拍。在此做一個(gè)記錄,如有不對的地方請多多指教杖小。

一肆汹、代理介紹

正向代理:舉個(gè)例子,我目前無法直接訪問到Y(jié)outube予权,但是我能訪問一個(gè)代理服務(wù)器,而這個(gè)代理服務(wù)器可以訪問Youtube昂勉,于是我先連上代理服務(wù)器,告訴他我需要獲取Youtube的內(nèi)容,代理服務(wù)器去取回來,然后返回給我。正向代理就是一個(gè)位于客戶端和原始服務(wù)器之間的服務(wù)器扫腺,為了從原始服務(wù)器取得內(nèi)容岗照,客戶端向代理發(fā)送一個(gè)請求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端笆环。

反向代理:再舉個(gè)例子,我們跟移動客服聯(lián)系時(shí)躁劣,只需要撥通了10086?的總機(jī)號碼,電話那頭則會轉(zhuǎn)接客服為我們服務(wù)账忘,但我們并不知道真正提供服務(wù)的人是誰。反向代理隱藏了真實(shí)的服務(wù)端闪萄,當(dāng)我們訪問一個(gè)網(wǎng)站時(shí)奇颠,背后可能有成千上萬臺服務(wù)器為我們服務(wù),但具體是哪一臺我們并不知道烈拒,也不需要知道,你只需要知道反向代理服務(wù)器是誰就好了荆几,之后反向代理服務(wù)器會幫我們把請求轉(zhuǎn)發(fā)到提供真實(shí)計(jì)算的服務(wù)器那里去。

二吨铸、Nginx功能說明

1、靜態(tài)HTTP服務(wù)器

? ?Nginx是一個(gè)HTTP服務(wù)器诞吱,可以將服務(wù)器上的靜態(tài)文件(如HTML舟奠、圖片)通過HTTP協(xié)議展現(xiàn)給客戶端竭缝。

? ?配置示例:

server {?

? ? ? listen80; # 端口號?

? ? ? location / {?

? ? ? ? ? root D:\frontproject\views; # 靜態(tài)文件路徑?

? ? ? }?

? }?

? ?動靜分離是讓動態(tài)網(wǎng)站里的動態(tài)網(wǎng)頁根據(jù)一定規(guī)則把不變的資源和經(jīng)常變的資源區(qū)分開來,動靜資源做好了拆分以后沼瘫,我們就可以根據(jù)靜態(tài)資源的特點(diǎn)將其做緩存操作抬纸。

? ?配置示例:

server {

? ? ? ? listen? ? ? 80;

? ? ? ? server_name? localhost;

? ? ? ? location / {

? ? ? ? ? ? root? D:\frontproject;

? ? ? ? ? ? index? index.html;

? ? ? ? }

? ? ? # 所有靜態(tài)請求都由nginx處理?

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

? ? ? ? ? root? ? D:\frontproject;

? ? ? }

? ? ? # 所有動態(tài)請求都轉(zhuǎn)發(fā)給tomcat處理?

? ? ? location ~ \.do$ {

? ? ? ? ? proxy_pass? http://localhost:8080;

? ? ? }

? ? ? }


2、反向代理服務(wù)器

客戶端請求Nginx耿戚,Nginx請求應(yīng)用服務(wù)器湿故,然后將結(jié)果返回給客戶端,此時(shí)Nginx就是反向代理服務(wù)器膜蛔。

? ?配置示例:??

server{

? ? ? listen 80;?

? ? ? location / {?

? ? ? ? ? proxy_pass http://127.0.0.1:8080; # 應(yīng)用服務(wù)器HTTP地址?

? ? ? }?

? }?

3坛猪、負(fù)載均衡

當(dāng)網(wǎng)站訪問量非常大,將同一個(gè)應(yīng)用部署在多臺服務(wù)器上飞几,將大量用戶的請求分配給多臺機(jī)器處理砚哆。同時(shí)帶來的好處是,其中一臺服務(wù)器萬一掛了屑墨,只要還有其他服務(wù)器正常運(yùn)行躁锁,就不會影響用戶使用。

? ?Nginx可以通過反向代理來實(shí)現(xiàn)負(fù)載均衡卵史,并能使用3種自帶策略及2種第三方策略战转。

? ?(1)RR(默認(rèn),每個(gè)請求按時(shí)間順序逐一分配到不同的后端服務(wù)器)??

upstream mypro {

? ? ? server 192.168.20.1:8080; # 應(yīng)用服務(wù)器1?

? ? ? server 192.168.20.2:8080; # 應(yīng)用服務(wù)器2?

? ? }?

? ? server {?

? ? ? listen 80;?

? ? ? location / {?

? ? ? ? ? proxy_pass http://mypro ;?

? ? ? }?

? ? }

(2)權(quán)重(指定輪詢幾率以躯,weight和訪問比率成正比槐秧,用于后端服務(wù)器性能不均的情況)?

upstream mypro {?

? ? ? server 192.168.20.1:8080 weight=3; # 該服務(wù)器處理3/4請求?

? ? ? server 192.168.20.2:8080; # weight默認(rèn)為1,該服務(wù)器處理1/4請求?

? ? }?

? ? server {?

? ? ? ... ...

? ? }?

? ?(3)ip-hash(以上配置會將請求輪詢分配到應(yīng)用服務(wù)器忧设,也就是一個(gè)客戶端的多次請求刁标,有可能會由多臺不同的服務(wù)器處理(若存在登錄session時(shí)則需要重復(fù)登錄)。ip-hash根據(jù)客戶端ip地址的hash值將請求分配給固定的某一個(gè)服務(wù)器處理)

upstream mypro {?

? ? ? ? ip_hash; # 根據(jù)客戶端IP地址Hash值將請求分配給固定的一個(gè)服務(wù)器處理?

? ? ? ? server 192.168.20.1:8080;?

? ? ? ? server 192.168.20.2:8080;?

? ? }?

? ? server {?

? ? ? ? ... ...

? ? }?

? ?(4)fair(第三方 按后端服務(wù)器的響應(yīng)時(shí)間來分配請求址晕,響應(yīng)時(shí)間短的優(yōu)先分配)

upstream mypro {

? ? ? ? fair;

? ? ? ? server localhost:8080;

? ? ? ? server localhost:8081;

? ? }

? ?(5)url_hash(第三方 按訪問url的hash結(jié)果來分配請求膀懈,使每個(gè)url定向到同一個(gè)后端服務(wù)器,后端服務(wù)器為緩存時(shí)比較有效谨垃。 在upstream中加入hash語句启搂,server語句中不能寫入weight等其他的參數(shù),hash_method是使用的hash算法)??

upstream mypro {

? ? ? ? hash $request_uri;

? ? ? ? hash_method crc32;

? ? ? ? server localhost:8080;

? ? ? ? server localhost:8081;

? ? }

4刘陶、虛擬主機(jī)

有的網(wǎng)站訪問量大胳赌,需要負(fù)載均衡。有的網(wǎng)站匙隔,由于訪問量太小疑苫,需要節(jié)省成本,將多個(gè)網(wǎng)站部署在同一臺服務(wù)器上。

例如將www.a.com和www.b.com兩個(gè)網(wǎng)站部署在同一臺服務(wù)器上纳决,兩個(gè)域名解析到同一個(gè)IP地址乡小,但是用戶通過兩個(gè)域名卻可以打開兩個(gè)完全不同的網(wǎng)站,互相不影響胜榔,就像訪問兩個(gè)服務(wù)器一樣夭织,所以叫兩個(gè)虛擬主機(jī)吠撮。

server {?

? ? ? ? listen 80 default_server;?

? ? ? ? server_name _;?

? ? ? ? return 444; # 過濾其他域名的請求泥兰,返回444狀態(tài)碼?

? ? }?

? ? server {?

? ? ? ? listen 80;?

? ? ? ? server_name www.a.com; # www.a.com域名?

? ? ? ? location / {?

? ? ? ? ? proxy_pass http://localhost:8080; # 對應(yīng)端口號8080?

? ? ? }?

? ? }?

? ? server {?

? ? ? listen 80;?

? ? ? server_name www.b.com; # www.b.com域名?

? ? ? location / {?

? ? ? ? ? proxy_pass http://localhost:8081; # 對應(yīng)端口號8081?

? ? ? }?

? }

在服務(wù)器8080和8081分別開了一個(gè)應(yīng)用鞋诗,客戶端通過不同的域名訪問,根據(jù)server_name可以反向代理到對應(yīng)的應(yīng)用服務(wù)器全庸。

虛擬主機(jī)的原理是通過HTTP請求頭中的Host是否匹配server_name來實(shí)現(xiàn)的壶笼,另外雁刷,server_name配置還可以過濾有人惡意將某些域名指向你的主機(jī)服務(wù)器安券。


三侯勉、配置說明

? Nginx的基本配置在nginx.conf文件中铝阐。(結(jié)合組內(nèi)配置文件,發(fā)現(xiàn)分別建立了sites.conf和upstream.conf文件遍蟋,再include到nginx.conf中來動態(tài)解耦地完成配置)

events{? ? ? ? ? ? ? ? ? ? ? ? ? # nginx工作模式配置

? ? ? ? worker_connections 1024;? #指定最大可以同時(shí)接收的連接數(shù)量和worker processes共同決定

? ? ? ? multi_accept on;? ? ? ? ? # nginx在收到一個(gè)新連接通知后盡可能多的接受更多的連接

? ? ? ? use epoll;? ? ? ? ? ? ? ? # 配置指定了線程輪詢的方法

? ? }


? ? http {? ? ? ? ? ? ? ? ? ? ? ? # http設(shè)置

? ? ? ? ....

? ? server {? ? ? ? ? ? ? ? ? ? #服務(wù)器訪問信息的配置虚青,一個(gè)http中可以配置多個(gè)server

? ? ? ? listen? ? ? 80;? ? ? ? #監(jiān)聽端口

? ? ? ? server_name xxx.net;? ? #指定ip地址或者代理域名

? ? ? ? root? ? ? ? ? ? ? ? ? ? #整個(gè)server虛擬主機(jī)內(nèi)的根目錄螺男,所有當(dāng)前主機(jī)中web項(xiàng)目的根目錄

? ? ? ? index index.html? ? ? ? #用戶訪問web網(wǎng)站時(shí)的全局首頁

? ? ? ? charset? ? ? ? ? ? ? ? #用于設(shè)置www/路徑中配置的網(wǎng)頁的默認(rèn)編碼格式

? ? ? ? access_log? ? ? ? ? ? ? #用于指定該虛擬主機(jī)服務(wù)器中的訪問記錄日志存放路徑

? ? ? ? error_log? ? ? ? ? ? ? #用于指定該虛擬主機(jī)服務(wù)器中訪問錯(cuò)誤日志的存放路徑

? ? ? ? location / {? ? ? ? ? ? #訪問路由的配置

? ? ? ? ? ? proxy_pass http://namexx;? ? #代理轉(zhuǎn)發(fā)域名

? ? ? ? ? ? root? ? ? ? ? ? ? ? #用于指定訪問根目錄時(shí)奢人,訪問虛擬主機(jī)的web目錄

? ? ? ? ? ? index? ? ? ? ? ? ? #在不指定訪問具體資源時(shí)淆院,默認(rèn)展示的資源文件列表? ? ? ? ?

? ? ? }

? ? upstream namexx {? ? ? ? ? # 代理域名與ip的映射配置 和 負(fù)載均衡配置

? ? ? ? ? ? server 192.168.20.1:8080; # 應(yīng)用服務(wù)器1?

? ? ? ? ? ? server 192.168.20.2:8080; # 應(yīng)用服務(wù)器2

? ? }

? ? }


四土辩、Nginx常用命令及l(fā)ocation語法

?1、nginx常用命令

? ? ? nginx?-s?quit? ? ? ? 停止ngix??

? ? ? nginx?-s?reload?????重新載入nginx(當(dāng)配置信息發(fā)生修改時(shí))??

? ? ? nginx?-s?reopen?????打開日志文件??

? ? ? nginx?-v? ? ? ? ? ? 查看版本??

? ? ? nginx?-t? ? ? ? ? ? 查看nginx的配置文件的目錄??

? ? ? nginx?-h? ? ? ? ? ? 查看幫助信息?

2搂妻、基本語法:location [=|~|~*|^~] /uri/ { … }

? ? ? = 嚴(yán)格匹配欲主。如果這個(gè)查詢匹配逝嚎,那么將停止搜索并立即處理此請求。

? ? ? ~ :為區(qū)分大小寫匹配(可用正則表達(dá)式)

? ? ? !~:為區(qū)分大小寫不匹配

? ? ? ~*:為不區(qū)分大小寫匹配(可用正則表達(dá)式)

? ? ? !~*:為不區(qū)分大小寫不匹配

? ? ? ^~:如果把這個(gè)前綴用于一個(gè)常規(guī)字符串,告訴nginx?如果路徑匹配那么不測試正則表達(dá)式引几。

? ? ? ^: 以什么開頭的匹配

? ? ? $: 以什么結(jié)尾的匹配

? ?示例:

? ? ? (1)location = / { # 只匹配 / 查詢挽铁。}

? ? ? (2)location / {

? ? ? ? ? ? ? ? ? # 匹配任何查詢叽掘,因?yàn)樗姓埱蠖家?/ 開頭。但是正則表達(dá)式規(guī)則和長的塊規(guī)則將被優(yōu)先和查詢匹配盖腕。

? ? ? ? }

? ? ? (3)location ^~ /images/ {

? ? ? ? ? ? ? ? ? # 匹配任何以 /images/ 開頭的查詢并且停止搜索。任何正則表達(dá)式將不會被測試溃列。

? ? ? ? }

? ? ? (4)location ~*.(gif|jpg|jpeg)$ {

? ? ? ? ? ? ? ? # 匹配任何以 gif听隐、jpg 或 jpeg 結(jié)尾的請求。

? ? ? ? }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辽幌,一起剝皮案震驚了整個(gè)濱河市椿访,隨后出現(xiàn)的幾起案子成玫,更是在濱河造成了極大的恐慌,老刑警劉巖猪腕,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钦勘,死亡現(xiàn)場離奇詭異彻采,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)岭粤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門剃浇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猎物,“玉大人,你說我怎么就攤上這事溜宽≈仕В” “怎么了煤惩?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵剪侮,是天一觀的道長。 經(jīng)常有香客問我瓣俯,道長彩匕,這世上最難降的妖魔是什么媒区? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任袜漩,我火速辦了婚禮,結(jié)果婚禮上奠货,老公的妹妹穿的比我還像新娘座掘。我一直安慰自己雹顺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布贩挣。 她就那樣靜靜地躺著王财,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绒净。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天改览,我揣著相機(jī)與錄音缤言,去河邊找鬼。 笑死庆揩,一個(gè)胖子當(dāng)著我的面吹牛跌穗,可吹牛的內(nèi)容都是我干的蚌吸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼推励,長吁一口氣:“原來是場噩夢啊……” “哼验辞!你這毒婦竟也來了喊衫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤壳贪,失蹤者是張志新(化名)和其女友劉穎违施,沒想到半個(gè)月后磕蒲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體只盹,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡站削,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年许起,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片园细。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡珊肃,死狀恐怖伦乔,靈堂內(nèi)的尸體忽然破棺而出董习,到底是詐尸還是另有隱情,我是刑警寧澤皿淋,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布窝趣,位于F島的核電站,受9級特大地震影響哑舒,放射性物質(zhì)發(fā)生泄漏洗鸵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一甘凭、第九天 我趴在偏房一處隱蔽的房頂上張望丹弱。 院中可真熱鬧贡翘,春花似錦、人聲如沸泛鸟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽北滥。三九已至刚操,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間再芋,已是汗流浹背菊霜。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留济赎,地道東北人鉴逞。 一個(gè)月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像司训,于是被迫代替她去往敵國和親构捡。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

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