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