1.Nginx服務(wù)優(yōu)化
(1)配置Nginx隱藏版本號
隱藏Nginx版本號,避免安全漏洞泄漏:修改配置文件法;修改源碼法
server_tokens off; ##添加,關(guān)閉版本號
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插件包,解壓到一個目錄,編譯安裝nginx,./configure --add-module='模塊路徑' && make -j 2 && make install 修改nginx.conf 文件,在http配置塊加more_clear_ headers '響應(yīng)頭字段'; ————可去除響應(yīng)頭任何字段
(2)修改Nginx用戶與組
Nginx運行時進(jìn)程需要有用戶與組的支持,以實現(xiàn)對網(wǎng)站文件讀取時進(jìn)行訪問控制
Nginx默認(rèn)使用nobody用戶賬號與組賬號
修改的方法:編譯安裝時指定用戶與組;修改配置文件指定用戶與組
user 用戶名 組名;

(3)配置Nginx網(wǎng)頁緩存時間
當(dāng)Nginx將網(wǎng)頁數(shù)據(jù)返回給客戶端后,可設(shè)置緩存的時間,以方便在日后進(jìn)行相同內(nèi)容的請求時直接返回,避免重復(fù)請求,加快了訪問速度
一般針對靜態(tài)網(wǎng)頁設(shè)置,對動態(tài)網(wǎng)頁不設(shè)置緩存時間
設(shè)置方法:修改配置文件,在http段、或者server段、或者location段加入對特定內(nèi)容的過期參數(shù)
expires 緩存時間;

(4)實現(xiàn)Nginx的日志切割
隨著Nginx運行時間增加,日志也會增加。為了方便掌握Nginx運行狀態(tài),需要時刻關(guān)注Nginx日志文件
太大的日志文件對監(jiān)控是一個大災(zāi)難:定期進(jìn)行日志文件的切割
Nginx自身不具備日志分割處理的功能,但可以通過Nginx信號控制功能的腳本實現(xiàn)日志的自動切割
通過Linux的計劃任務(wù)周期性地進(jìn)行日志切割
shell腳本 + crontab

在linux操作系統(tǒng)中,每個文件都有很多的時間參數(shù),其中有三個比較主要,分別是ctime,atime,mtime ctime(status time): 當(dāng)修改文件的權(quán)限或者屬性的時候,就會更新這個時間,ctime并不是create time,更像是change time, 只有當(dāng)更新文件的屬性或者權(quán)限的時候才會更新這個時間,但是更改內(nèi)容的話是不會更新這個時間。 atime(accesstime): 當(dāng)使用這個文件的時候就會更新這個時間。 mtime(modification time): 當(dāng)修改文件的內(nèi)容數(shù)據(jù)的時候,就會更新這個時間,而更改權(quán)限或者屬性,mtime不會改變,這就是和ctime的區(qū)別。
(5)配置Nginx實現(xiàn)連接超時
為避免同一客戶端長時間占用連接,造成資源浪費,可設(shè)置相應(yīng)的連接超時參數(shù),實現(xiàn)控制連接訪問時間
超時參數(shù):
Keepalive_timeout 服務(wù)端超時時間 客戶端超時時間;##設(shè)置連接保持超時時間
Client_header_timeout ##指定等待客戶端發(fā)送請求頭的超時時間
Client_body_timeout ##設(shè)置請求體讀超時時間

keepalive_timeout 指定KeepAlive的超時時間(timeout)。指定一個長連接最多可以保持多長時間,服務(wù)器將會在這個時間后關(guān)閉連接。Nginx的默認(rèn)值是65秒,有些瀏覽器最多只保持 60 秒,所以可以設(shè)定為 60 秒。若將它設(shè)置為0,就禁止了keepalive 連接。 第二個參數(shù)(可選的)指定了在響應(yīng)頭Keep-Alive:timeout=time中的time值。這個頭能夠讓一些瀏覽器主動關(guān)閉連接,這樣服務(wù)器就不必去關(guān)閉連接了。沒有這個參數(shù),Nginx 不會發(fā)送 Keep-Alive 響應(yīng)頭。 client_header_timeout 客戶端向服務(wù)端發(fā)送一個完整的 request header 的超時時間。如果客戶端在指定時間內(nèi)沒有發(fā)送一個完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)。 client_body_timeout 指定客戶端與服務(wù)端建立連接后發(fā)送 request body 的超時時間。如果客戶端在指定時間內(nèi)沒有發(fā)送任何內(nèi)容,Nginx 返回 HTTP 408(Request Timed Out)。
(6)更改Nginx運行進(jìn)程數(shù)
在高并發(fā)場景,需要啟動更多的Nginx進(jìn)程以保證快速響應(yīng),以處理用戶的請求,避免造成阻塞
修改配置文件的worker_processes參數(shù):一般設(shè)為CPU的個數(shù)或者核數(shù);在高并發(fā)情況下可設(shè)置為CPU個數(shù)或者核數(shù)的2倍
增加進(jìn)程數(shù),可減少了系統(tǒng)的開銷,提升了服務(wù)速度
默認(rèn)情況,Nginx的多個進(jìn)程可能跑在一個CPU上,可以分配不同的進(jìn)程給不同的CPU處理,充分利用硬件多核多CPU
cat /proc/cpuinfo | grep -c "physical id" #查看cpu核數(shù) ps aux | grep nginx#查看nginx主進(jìn)程中包含幾個子進(jìn)程 worker_processes 與服務(wù)器CPU數(shù)量相同或auto #修改為cpu的總核數(shù),一般情況不超過8個 worker_cpu_affinity ##工作進(jìn)程靜態(tài)綁核 #將每個worker子進(jìn)程與特定CPU物理核心綁定,提升cpu利用率,進(jìn)而提升性能。避免同一個worker子進(jìn)程在不同的CPU核心上切換或者多個進(jìn)程跑在一個CPU上,緩存失效,降低性能。

(7)配置Nginx實現(xiàn)網(wǎng)頁壓縮功能
Nginx的ngx_http_gzip_module壓縮模塊提供對文件內(nèi)容壓縮的功能
允許Nginx服務(wù)器將輸出內(nèi)容在發(fā)送客戶端之前進(jìn)行壓縮,以節(jié)約網(wǎng)站帶寬,提升用戶的訪問體驗,默認(rèn)已經(jīng)安裝
可在配置文件中加入相應(yīng)的壓縮功能參數(shù)對壓縮性能進(jìn)行優(yōu)化
gzip on; #開啟gzip壓縮功能


#實現(xiàn)網(wǎng)頁圖片的大小壓縮 http_image_filter_module是Nginx提供的集成圖片處理模塊,可以用于實時縮放圖片,旋轉(zhuǎn)圖片,驗證圖片有效性以及獲取圖片寬高以及圖片類型信息 yum install -y gd-devel ##yum在線源安裝gd-devel,http_image_filter_module模塊需要依賴gd-devel的支持,重新編譯安裝啟動 ./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è)置一個維度,另一維可以指定為:“-” #注:Nginx的Gzip壓縮功能雖然好用,但是下面兩類文件資源不太建議啟用此壓縮功能。 1)圖片/視頻類型資源 原因:圖片如jpg、png文件本身就會有壓縮,所以就算開啟gzip后,壓縮前和壓縮后大小沒有多大區(qū)別,所以開啟了反而會白白的浪費資源。 2)大文件資源 原因:會消耗大量的cpu資源,且不一定有明顯的效果。

(8)配置Nginx實現(xiàn)防盜鏈
在企業(yè)網(wǎng)站服務(wù)中,一般都要配置防盜鏈功能,以避免網(wǎng)站內(nèi)容被非法盜用,造成經(jīng)濟損失
Nginx防盜鏈功能也非常強大。默認(rèn)情況下,只需要進(jìn)行簡單的配置,即可實現(xiàn)防盜鏈處理
ewrite if ( $invalid_referer) {rewrite... }

~* .(jpg|gif|swf)$ :這段正則表達(dá)式表示匹配不區(qū)分大小寫,以.jpg 或.gif 或.swf 結(jié)尾的文件; valid_referers :設(shè)置信任的網(wǎng)站,可以正常使用圖片; none:允許沒有http_refer的請求訪問資源(根據(jù)Referer的定義,它的作用是指示一個請求是從哪里鏈接過來的,如果直接在瀏覽器的地址欄中輸入一個資源的URL地址,那么這種請求是不會包含 Referer 字段的),如 http://www.kgc.com/game.jpg 我們使用 http://www.kgc.com 訪問顯示的圖片,可以理解成 http://www.kgc.com/game.jpg 這個請求是從 http://www.kgc.com 這個鏈接過來的。 blocked:允許不是http://開頭的,不帶協(xié)議的請求訪問資源; *.kgc.com:只允許來自指定域名的請求訪問資源,如 http://www.kgc.com if語句:如果鏈接的來源域名不在valid_referers所列出的列表中,$invalid_referer為true,則執(zhí)行后面的操作,即進(jìn)行重寫或返回 403 頁面。
(1)實驗演練
盜鏈網(wǎng)站主機(20.0.0.160)


Web源主機(20.0.0.150)


(9)nginx常用模塊
http_stub_status_module 訪問狀態(tài)統(tǒng)計模塊 http_gzip_module 網(wǎng)頁壓縮模塊 http_rewrite_module URL地址重寫模塊 http_ssl_module https安全加密模塊 http_auth_basic_module 網(wǎng)頁用戶認(rèn)證模塊 http_fastcgi_module fastcgi轉(zhuǎn)發(fā)模塊 http_image_filter_module 圖片處理模塊 http_mp4/flv_module mp4/flv視頻格式模塊 http_limit_req_module 限制請求數(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文章
682瀏覽量
31057 -
編譯
+關(guān)注
關(guān)注
0文章
685瀏覽量
34933 -
nginx
+關(guān)注
關(guān)注
0文章
180瀏覽量
12958
原文標(biāo)題:1.Nginx服務(wù)優(yōu)化
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Linux上Nginx獲得最佳性能的8種方法
【NanoPi2試用體驗】高級(一):基于nginx的web服務(wù)器
NanoPi NEO - 可靠的Nginx 網(wǎng)絡(luò)服務(wù)器
Linux運維Nginx軟件優(yōu)化之安全優(yōu)化
Linux運維Nginx軟件優(yōu)化之Nginx性能優(yōu)化
Linux運維Nginx軟件優(yōu)化之日志優(yōu)化
Nginx架構(gòu)介紹 Nginx服務(wù)器模型分析
Nginx的詳細(xì)知識點講解
Nginx 如何實現(xiàn)高性能低消耗
Nginx性能優(yōu)化終極指南

Nginx服務(wù)優(yōu)化教程
評論