1.Nginx服務(wù)優(yōu)化
(1)配置Nginx隱藏版本號(hào)
隱藏Nginx版本號(hào),避免安全漏洞泄漏:修改配置文件法;修改源碼法
server_tokens off; ##添加,關(guān)閉版本號(hào)
nginx.h ##修改源碼
①
②
重新編譯安裝 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module make -j 2 && make install
③
headers-more-nginx-module-0.34.tar.gz插件包,解壓到一個(gè)目錄,編譯安裝nginx,./configure --add-module='模塊路徑' && make -j 2 && make install 修改nginx.conf 文件,在http配置塊加more_clear_ headers '響應(yīng)頭字段'; ————可去除響應(yīng)頭任何字段
(2)修改Nginx用戶與組
Nginx運(yùn)行時(shí)進(jìn)程需要有用戶與組的支持,以實(shí)現(xiàn)對(duì)網(wǎng)站文件讀取時(shí)進(jìn)行訪問控制
Nginx默認(rèn)使用nobody用戶賬號(hào)與組賬號(hào)
修改的方法:編譯安裝時(shí)指定用戶與組;修改配置文件指定用戶與組
user 用戶名 組名;
(3)配置Nginx網(wǎng)頁(yè)緩存時(shí)間
當(dāng)Nginx將網(wǎng)頁(yè)數(shù)據(jù)返回給客戶端后,可設(shè)置緩存的時(shí)間,以方便在日后進(jìn)行相同內(nèi)容的請(qǐng)求時(shí)直接返回,避免重復(fù)請(qǐng)求,加快了訪問速度
一般針對(duì)靜態(tài)網(wǎng)頁(yè)設(shè)置,對(duì)動(dòng)態(tài)網(wǎng)頁(yè)不設(shè)置緩存時(shí)間
設(shè)置方法:修改配置文件,在http段、或者server段、或者location段加入對(duì)特定內(nèi)容的過期參數(shù)
expires 緩存時(shí)間;
(4)實(shí)現(xiàn)Nginx的日志切割
隨著Nginx運(yùn)行時(shí)間增加,日志也會(huì)增加。為了方便掌握Nginx運(yùn)行狀態(tài),需要時(shí)刻關(guān)注Nginx日志文件
太大的日志文件對(duì)監(jiān)控是一個(gè)大災(zāi)難:定期進(jìn)行日志文件的切割
Nginx自身不具備日志分割處理的功能,但可以通過Nginx信號(hào)控制功能的腳本實(shí)現(xiàn)日志的自動(dòng)切割
通過Linux的計(jì)劃任務(wù)周期性地進(jìn)行日志切割
shell腳本 + crontab
在linux操作系統(tǒng)中,每個(gè)文件都有很多的時(shí)間參數(shù),其中有三個(gè)比較主要,分別是ctime,atime,mtime ctime(status time): 當(dāng)修改文件的權(quán)限或者屬性的時(shí)候,就會(huì)更新這個(gè)時(shí)間,ctime并不是create time,更像是change time, 只有當(dāng)更新文件的屬性或者權(quán)限的時(shí)候才會(huì)更新這個(gè)時(shí)間,但是更改內(nèi)容的話是不會(huì)更新這個(gè)時(shí)間。 atime(accesstime): 當(dāng)使用這個(gè)文件的時(shí)候就會(huì)更新這個(gè)時(shí)間。 mtime(modification time): 當(dāng)修改文件的內(nèi)容數(shù)據(jù)的時(shí)候,就會(huì)更新這個(gè)時(shí)間,而更改權(quán)限或者屬性,mtime不會(huì)改變,這就是和ctime的區(qū)別。
(5)配置Nginx實(shí)現(xiàn)連接超時(shí)
為避免同一客戶端長(zhǎng)時(shí)間占用連接,造成資源浪費(fèi),可設(shè)置相應(yīng)的連接超時(shí)參數(shù),實(shí)現(xiàn)控制連接訪問時(shí)間
超時(shí)參數(shù):
Keepalive_timeout 服務(wù)端超時(shí)時(shí)間 客戶端超時(shí)時(shí)間;##設(shè)置連接保持超時(shí)時(shí)間
Client_header_timeout ##指定等待客戶端發(fā)送請(qǐng)求頭的超時(shí)時(shí)間
Client_body_timeout ##設(shè)置請(qǐng)求體讀超時(shí)時(shí)間
keepalive_timeout 指定KeepAlive的超時(shí)時(shí)間(timeout)。指定一個(gè)長(zhǎng)連接最多可以保持多長(zhǎng)時(shí)間,服務(wù)器將會(huì)在這個(gè)時(shí)間后關(guān)閉連接。Nginx的默認(rèn)值是65秒,有些瀏覽器最多只保持 60 秒,所以可以設(shè)定為 60 秒。若將它設(shè)置為0,就禁止了keepalive 連接。 第二個(gè)參數(shù)(可選的)指定了在響應(yīng)頭Keep-Alive:timeout=time中的time值。這個(gè)頭能夠讓一些瀏覽器主動(dòng)關(guān)閉連接,這樣服務(wù)器就不必去關(guān)閉連接了。沒有這個(gè)參數(shù),Nginx 不會(huì)發(fā)送 Keep-Alive 響應(yīng)頭。 client_header_timeout 客戶端向服務(wù)端發(fā)送一個(gè)完整的 request header 的超時(shí)時(shí)間。如果客戶端在指定時(shí)間內(nèi)沒有發(fā)送一個(gè)完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)。 client_body_timeout 指定客戶端與服務(wù)端建立連接后發(fā)送 request body 的超時(shí)時(shí)間。如果客戶端在指定時(shí)間內(nèi)沒有發(fā)送任何內(nèi)容,Nginx 返回 HTTP 408(Request Timed Out)。
(6)更改Nginx運(yùn)行進(jìn)程數(shù)
在高并發(fā)場(chǎng)景,需要啟動(dòng)更多的Nginx進(jìn)程以保證快速響應(yīng),以處理用戶的請(qǐng)求,避免造成阻塞
修改配置文件的worker_processes參數(shù):一般設(shè)為CPU的個(gè)數(shù)或者核數(shù);在高并發(fā)情況下可設(shè)置為CPU個(gè)數(shù)或者核數(shù)的2倍
增加進(jìn)程數(shù),可減少了系統(tǒng)的開銷,提升了服務(wù)速度
默認(rèn)情況,Nginx的多個(gè)進(jìn)程可能跑在一個(gè)CPU上,可以分配不同的進(jìn)程給不同的CPU處理,充分利用硬件多核多CPU
cat /proc/cpuinfo | grep -c "physical id" #查看cpu核數(shù) ps aux | grep nginx#查看nginx主進(jìn)程中包含幾個(gè)子進(jìn)程 worker_processes 與服務(wù)器CPU數(shù)量相同或auto #修改為cpu的總核數(shù),一般情況不超過8個(gè) worker_cpu_affinity ##工作進(jìn)程靜態(tài)綁核 #將每個(gè)worker子進(jìn)程與特定CPU物理核心綁定,提升cpu利用率,進(jìn)而提升性能。避免同一個(gè)worker子進(jìn)程在不同的CPU核心上切換或者多個(gè)進(jìn)程跑在一個(gè)CPU上,緩存失效,降低性能。
(7)配置Nginx實(shí)現(xiàn)網(wǎng)頁(yè)壓縮功能
Nginx的ngx_http_gzip_module壓縮模塊提供對(duì)文件內(nèi)容壓縮的功能
允許Nginx服務(wù)器將輸出內(nèi)容在發(fā)送客戶端之前進(jìn)行壓縮,以節(jié)約網(wǎng)站帶寬,提升用戶的訪問體驗(yàn),默認(rèn)已經(jīng)安裝
可在配置文件中加入相應(yīng)的壓縮功能參數(shù)對(duì)壓縮性能進(jìn)行優(yōu)化
gzip on; #開啟gzip壓縮功能
#實(shí)現(xiàn)網(wǎng)頁(yè)圖片的大小壓縮 http_image_filter_module是Nginx提供的集成圖片處理模塊,可以用于實(shí)時(shí)縮放圖片,旋轉(zhuǎn)圖片,驗(yàn)證圖片有效性以及獲取圖片寬高以及圖片類型信息 yum install -y gd-devel ##yum在線源安裝gd-devel,http_image_filter_module模塊需要依賴gd-devel的支持,重新編譯安裝啟動(dòng) ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_image_filter_module make -j 2 && make install image_filter resize 200 200;#按等比例縮小圖像的寬或高至指定大小。如果只想設(shè)置一個(gè)維度,另一維可以指定為:“-” #注:Nginx的Gzip壓縮功能雖然好用,但是下面兩類文件資源不太建議啟用此壓縮功能。 1)圖片/視頻類型資源 原因:圖片如jpg、png文件本身就會(huì)有壓縮,所以就算開啟gzip后,壓縮前和壓縮后大小沒有多大區(qū)別,所以開啟了反而會(huì)白白的浪費(fèi)資源。 2)大文件資源 原因:會(huì)消耗大量的cpu資源,且不一定有明顯的效果。
(8)配置Nginx實(shí)現(xiàn)防盜鏈
在企業(yè)網(wǎng)站服務(wù)中,一般都要配置防盜鏈功能,以避免網(wǎng)站內(nèi)容被非法盜用,造成經(jīng)濟(jì)損失
Nginx防盜鏈功能也非常強(qiáng)大。默認(rèn)情況下,只需要進(jìn)行簡(jiǎn)單的配置,即可實(shí)現(xiàn)防盜鏈處理
ewrite if ( $invalid_referer) {rewrite... }
~* .(jpg|gif|swf)$ :這段正則表達(dá)式表示匹配不區(qū)分大小寫,以.jpg 或.gif 或.swf 結(jié)尾的文件; valid_referers :設(shè)置信任的網(wǎng)站,可以正常使用圖片; none:允許沒有http_refer的請(qǐng)求訪問資源(根據(jù)Referer的定義,它的作用是指示一個(gè)請(qǐng)求是從哪里鏈接過來(lái)的,如果直接在瀏覽器的地址欄中輸入一個(gè)資源的URL地址,那么這種請(qǐng)求是不會(huì)包含 Referer 字段的),如 http://www.kgc.com/game.jpg 我們使用 http://www.kgc.com 訪問顯示的圖片,可以理解成 http://www.kgc.com/game.jpg 這個(gè)請(qǐng)求是從 http://www.kgc.com 這個(gè)鏈接過來(lái)的。 blocked:允許不是http://開頭的,不帶協(xié)議的請(qǐng)求訪問資源; *.kgc.com:只允許來(lái)自指定域名的請(qǐng)求訪問資源,如 http://www.kgc.com if語(yǔ)句:如果鏈接的來(lái)源域名不在valid_referers所列出的列表中,$invalid_referer為true,則執(zhí)行后面的操作,即進(jìn)行重寫或返回 403 頁(yè)面。
(1)實(shí)驗(yàn)演練
盜鏈網(wǎng)站主機(jī)(20.0.0.160)
Web源主機(jī)(20.0.0.150)
(9)nginx常用模塊
http_stub_status_module 訪問狀態(tài)統(tǒng)計(jì)模塊 http_gzip_module 網(wǎng)頁(yè)壓縮模塊 http_rewrite_module URL地址重寫模塊 http_ssl_module https安全加密模塊 http_auth_basic_module 網(wǎng)頁(yè)用戶認(rèn)證模塊 http_fastcgi_module fastcgi轉(zhuǎn)發(fā)模塊 http_image_filter_module 圖片處理模塊 http_mp4/flv_module mp4/flv視頻格式模塊 http_limit_req_module 限制請(qǐng)求數(shù)模塊 http_limit_conn_module 限制連接數(shù)模塊 http_proxy_module 代理轉(zhuǎn)發(fā)模塊 http_upstream_*_module 負(fù)載均衡模塊 stream 四層代理轉(zhuǎn)發(fā)模塊
鏈接:https://www.cnblogs.com/zsy828/p/18223841
-
源碼
+關(guān)注
關(guān)注
8文章
665瀏覽量
30056 -
編譯
+關(guān)注
關(guān)注
0文章
674瀏覽量
33599 -
nginx
+關(guān)注
關(guān)注
0文章
161瀏覽量
12441
原文標(biāo)題:1.Nginx服務(wù)優(yōu)化
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Linux上Nginx獲得最佳性能的8種方法
nginx重啟命令linux步驟是什么?
【NanoPi2試用體驗(yàn)】高級(jí)(一):基于nginx的web服務(wù)器
NanoPi NEO - 可靠的Nginx 網(wǎng)絡(luò)服務(wù)器
Linux運(yùn)維Nginx軟件優(yōu)化之安全優(yōu)化
Linux運(yùn)維Nginx軟件優(yōu)化之Nginx性能優(yōu)化
Linux運(yùn)維Nginx軟件優(yōu)化之日志優(yōu)化
主要學(xué)習(xí)下nginx的安裝配置
Nginx架構(gòu)介紹 Nginx服務(wù)器模型分析

Nginx的詳細(xì)知識(shí)點(diǎn)講解

Nginx 如何實(shí)現(xiàn)高性能低消耗

評(píng)論