nginx(二)

前言

  • 未來(lái)會(huì)圍繞nginx系列寫(xiě)幾篇文章耽梅。包含自己理解的薛窥,用到的,學(xué)到的,希望和大家一起互相激勵(lì)诅迷,發(fā)現(xiàn)佩番、解決問(wèn)題,共同進(jìn)步罢杉。

目錄

  • nginx配置結(jié)構(gòu)(續(xù)上一篇nginx(一))

nginx config配置詳解
  1. http(需要重點(diǎn)關(guān)注的部分)

MIME-Type
設(shè)置nginx能識(shí)別的網(wǎng)絡(luò)資源媒體類型趟畏,如html、js滩租、css等
默認(rèn)為text/plain.

log_format
log_format MyTest 'remote_addr -remote_user [time_local] "request" '
'statusbody_bytes_sent "http_referer" ' '"http_user_agent" "$http_x_forwarded_for"';
其中MyTest為日志格式的名字赋秀,后面的為nginx的內(nèi)部變量組成的一串字符串。

access_log logs/access.log MyTest
定義日志的路徑以及采用的日志格式持际,該參數(shù)可以在server配置塊中定義沃琅。

sendfile on
是否調(diào)用sendfile函數(shù)傳輸文件哗咆,默認(rèn)為off蜘欲,使用sendfile函數(shù)傳輸,可以減少user mode和kernel mode的切換晌柬,從而提升服務(wù)器性能姥份。對(duì)于普通應(yīng)用設(shè)為 on,如果用來(lái)進(jìn)行下載等應(yīng)用磁盤(pán)IO重負(fù)載應(yīng)用年碘,可設(shè)置為off澈歉,以平衡磁盤(pán)與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的負(fù)載屿衅。

sendfile_max_chunk 128k
規(guī)定Nginx worker process每次調(diào)用sendfile()函數(shù)傳輸數(shù)據(jù)的最大值埃难,默認(rèn)值為0,設(shè)置為0則無(wú)限制涤久。

tcp_nopush on
tcp_nopush設(shè)置為on時(shí)涡尘,會(huì)調(diào)用tcp_cork方法進(jìn)行數(shù)據(jù)傳輸。
使用該方法會(huì)產(chǎn)生這樣的效果:當(dāng)應(yīng)用程序產(chǎn)生數(shù)據(jù)時(shí)响迂,內(nèi)核不會(huì)立馬封裝包考抄,而是當(dāng)數(shù)據(jù)量積累到一定量時(shí)才會(huì)封裝,然后傳輸蔗彤。這樣有助于解決網(wǎng)絡(luò)堵塞問(wèn)題川梅。默認(rèn)值為on。

keepalive_timeout 65 60
該參數(shù)有兩個(gè)值然遏,第一個(gè)值設(shè)置nginx服務(wù)器與客戶端會(huì)話結(jié)束后仍舊保持連接的最長(zhǎng)時(shí)間贫途,單位是秒,默認(rèn)為75s待侵。
第二個(gè)值可以省略丢早,它是針對(duì)客戶端的瀏覽器來(lái)設(shè)置的,可以通過(guò)curl -I看到header信息中有一項(xiàng)Keep-Alive: timeout=60诫给,如果不設(shè)置就沒(méi)有這一項(xiàng)香拉。
第二個(gè)數(shù)值設(shè)置后啦扬,瀏覽器就會(huì)根據(jù)這個(gè)數(shù)值決定何時(shí)主動(dòng)關(guān)閉連接,Nginx服務(wù)器就不操心了凫碌。但有的瀏覽器并不認(rèn)可該參數(shù)扑毡。

send_timeout
這個(gè)超時(shí)時(shí)間是發(fā)送響應(yīng)的超時(shí)時(shí)間,即Nginx服務(wù)器向客戶端發(fā)送了數(shù)據(jù)包盛险,但客戶端一直沒(méi)有去接收這個(gè)數(shù)據(jù)包瞄摊。
如果某個(gè)連接超過(guò)send_timeout定義的超時(shí)時(shí)間,那么Nginx將會(huì)關(guān)閉這個(gè)連接苦掘。

client_max_body_size 10m
瀏覽器在發(fā)送含有較大HTTP包體的請(qǐng)求時(shí)换帜,其頭部會(huì)有一個(gè)Content-Length字段,client_max_body_size是用來(lái)限制Content-Length所示值的大小的鹤啡。這個(gè)限制包體的配置不用等Nginx接收完所有的HTTP包體惯驼,就可以告訴用戶請(qǐng)求過(guò)大不被接受。會(huì)返回413狀態(tài)碼递瑰。例如祟牲,用戶試圖上傳一個(gè)1GB的文件,Nginx在收完包頭后抖部,發(fā)現(xiàn)Content-Length超過(guò)client_max_body_size定義的值说贝,就直接發(fā)送413(Request Entity Too Large)響應(yīng)給客戶端。

gzip on
是否開(kāi)啟gzip壓縮慎颗。

gzip_min_length 1k
設(shè)置允許壓縮的頁(yè)面最小字節(jié)數(shù)乡恕,頁(yè)面字節(jié)數(shù)從header頭得content-length中進(jìn)行獲取。默認(rèn)值是20俯萎。建議設(shè)置成大于1k的字節(jié)數(shù)傲宜,小于1k可能會(huì)越壓越大。

gzip_buffers 4 16k
設(shè)置系統(tǒng)獲取幾個(gè)單位的buffer用于存儲(chǔ)gzip的壓縮結(jié)果數(shù)據(jù)流讯屈。4 16k代表分配4個(gè)16k的buffer

gzip_http_version 1.1
用于識(shí)別 http 協(xié)議的版本蛋哭,早期的瀏覽器不支持 Gzip 壓縮,用戶會(huì)看到亂碼涮母,所以為了支持前期版本加上了這個(gè)選項(xiàng)谆趾。如果你用了Nginx反向代理并期望也啟用Gzip壓縮的話,由于末端通信是http/1.1叛本,故請(qǐng)?jiān)O(shè)置為 1.1沪蓬。

gzip_comp_level 6
gzip壓縮比,1壓縮比最小處理速度最快来候,9壓縮比最大但處理速度最慢(傳輸快但比較消耗cpu)

gzip_types mime-type ...
匹配mime類型進(jìn)行壓縮跷叉,無(wú)論是否指定,”text/html”類型總是會(huì)被壓縮的。
在conf/mime.conf里查看對(duì)應(yīng)的type。
示例:gzip_types text/plain application/x-javascript text/css text/html application/xml;

gzip_proxied any
Nginx作為反向代理的時(shí)候啟用云挟,決定開(kāi)啟或者關(guān)閉后端服務(wù)器返回的結(jié)果是否壓縮梆砸,匹配的前提是后端服務(wù)器必須要返回包含”Via”的 header頭。
以下為可用的值:
off - 關(guān)閉所有的代理結(jié)果數(shù)據(jù)的壓縮
expired - 啟用壓縮园欣,如果header頭中包含 "Expires" 頭信息
no-cache - 啟用壓縮帖世,如果header頭中包含 "Cache-Control:no-cache" 頭信息
no-store - 啟用壓縮,如果header頭中包含 "Cache-Control:no-store" 頭信息
private - 啟用壓縮沸枯,如果header頭中包含 "Cache-Control:private" 頭信息
no_last_modified - 啟用壓縮,如果header頭中不包含 "Last-Modified" 頭信息
no_etag - 啟用壓縮 ,如果header頭中不包含 "ETag" 頭信息
auth - 啟用壓縮 , 如果header頭中包含 "Authorization" 頭信息
any - 無(wú)條件啟用壓縮

gzip_vary on
和http頭有關(guān)系日矫,會(huì)在響應(yīng)頭加個(gè) Vary: Accept-Encoding ,可以讓前端的緩存服務(wù)器緩存經(jīng)過(guò)gzip壓縮的頁(yè)面绑榴,例如哪轿,用Squid緩存經(jīng)過(guò)Nginx壓縮的數(shù)據(jù)。

  1. server(虛擬主機(jī)相關(guān)翔怎,后面的nginx系列中也會(huì)把server單拎出來(lái)講)

server{} 包含在http{}內(nèi)部窃诉,每一個(gè)server{}都是一個(gè)虛擬主機(jī)(站點(diǎn))。
以下為nginx.conf配置文件中server{}部分的內(nèi)容姓惑。

server {
    listen       80;  //監(jiān)聽(tīng)端口為80褐奴,可以自定義其他端口按脚,也可以加上IP地址于毙,如,listen 127.0.0.1:8080;
    server_name  localhost; //定義網(wǎng)站域名辅搬,可以寫(xiě)多個(gè)唯沮,用空格分隔。
    #charset koi8-r; //定義網(wǎng)站的字符集堪遂,一般不設(shè)置介蛉,而是在網(wǎng)頁(yè)代碼中設(shè)置。
    #access_log  logs/host.access.log  main; //定義訪問(wèn)日志溶褪,可以針對(duì)每一個(gè)server(即每一個(gè)站點(diǎn))設(shè)置它們自己的訪問(wèn)日志币旧。

    ##在server{}里有很多l(xiāng)ocation配置段
    location / {
        root   html;  //定義網(wǎng)站根目錄,目錄可以是相對(duì)路徑也可以是絕對(duì)路徑猿妈。
        index  index.html index.htm; //定義站點(diǎn)的默認(rèn)頁(yè)吹菱。
    }

    #error_page  404              /404.html;  //定義404頁(yè)面

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;  //當(dāng)狀態(tài)碼為500、502彭则、503鳍刷、504時(shí),則訪問(wèn)50x.html
    location = /50x.html {
        root   html;  //定義50x.html所在路徑
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #定義訪問(wèn)php腳本時(shí)俯抖,將會(huì)執(zhí)行本location{}部分指令
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;  //proxy_pass后面指定要訪問(wèn)的url鏈接输瓜,用proxy_pass實(shí)現(xiàn)代理。
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;  //定義FastCGI服務(wù)器監(jiān)聽(tīng)端口與地址,支持兩種形式尤揣,1 IP:Port搔啊, 2 unix:/path/to/sockt
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  //定義SCRIPT_FILENAME變量,后面的路徑/scripts為上面的root指定的目錄
    #    include        fastcgi_params; //引用prefix/conf/fastcgi_params文件北戏,該文件定義了fastcgi相關(guān)的變量
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    # 
    #location ~ /\.ht {   //訪問(wèn)的url中坯癣,以/.ht開(kāi)頭的,如最欠,www.example.com/.htaccess示罗,會(huì)被拒絕,返回403狀態(tài)碼芝硬。
    #    deny  all;  //這里的all指的是所有的請(qǐng)求蚜点。
    #}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#    listen       8000;  //監(jiān)聽(tīng)8000端口
#    listen       somename:8080;  //指定ip:port
#    server_name  somename  alias  another.alias;  //指定多個(gè)server_name

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}


# HTTPS server
#
#server {
#    listen       443 ssl;  //監(jiān)聽(tīng)443端口,即ssl
#    server_name  localhost;

### 以下為ssl相關(guān)配置
#    ssl_certificate      cert.pem;    //指定pem文件路徑
#    ssl_certificate_key  cert.key;  //指定key文件路徑

#    ssl_session_cache    shared:SSL:1m;  //指定session cache大小
#    ssl_session_timeout  5m;  //指定session超時(shí)時(shí)間
#    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   //指定ssl協(xié)議
#    ssl_ciphers  HIGH:!aNULL:!MD5;  //指定ssl算法
#    ssl_prefer_server_ciphers  on;  //優(yōu)先采取服務(wù)器算法
#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}
  1. location(server里面)
    位于server里面拌阴,配置訪問(wèn)匹配的一些內(nèi)容(后面nginx系列中會(huì)有單獨(dú)實(shí)例部分介紹)

nginx(三)中將列舉實(shí)例介紹server绍绘、location

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市迟赃,隨后出現(xiàn)的幾起案子陪拘,更是在濱河造成了極大的恐慌,老刑警劉巖纤壁,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件左刽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡酌媒,警方通過(guò)查閱死者的電腦和手機(jī)欠痴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)秒咨,“玉大人喇辽,你說(shuō)我怎么就攤上這事∮晗” “怎么了菩咨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)陡厘。 經(jīng)常有香客問(wèn)我抽米,道長(zhǎng),這世上最難降的妖魔是什么雏亚? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任缨硝,我火速辦了婚禮,結(jié)果婚禮上罢低,老公的妹妹穿的比我還像新娘查辩。我一直安慰自己胖笛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布宜岛。 她就那樣靜靜地躺著长踊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪萍倡。 梳的紋絲不亂的頭發(fā)上身弊,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音列敲,去河邊找鬼阱佛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛戴而,可吹牛的內(nèi)容都是我干的凑术。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼所意,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼淮逊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起扶踊,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤泄鹏,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后秧耗,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體备籽,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年绣版,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胶台。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杂抽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出韩脏,到底是詐尸還是另有隱情缩麸,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布赡矢,位于F島的核電站杭朱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吹散。R本人自食惡果不足惜弧械,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望空民。 院中可真熱鬧刃唐,春花似錦羞迷、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至抖甘,卻和暖如春热鞍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背衔彻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工薇宠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人艰额。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓昼接,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親悴晰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子慢睡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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