-
1.Nginx服務最佳化
-
(1)實驗演練
-
(1)配置Nginx隱藏版本號
-
(2)修改Nginx使用者與組
-
(3)配置Nginx網頁快取時間
-
(4)實現Nginx的日誌切割
-
(5)配置Nginx實現連線超時
-
(6)更改Nginx執行程序數
-
(7)配置Nginx實現網頁壓縮功能
-
(8)配置Nginx實現防盜鏈
-
(9)nginx常用模組
1.Nginx服務最佳化
(1)配置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使用者與組
user 使用者名稱 組名;


(3)配置Nginx網頁快取時間
expires 快取時間;

(4)實現Nginx的日誌切割
shell指令碼 + crontab


在linux作業系統中,每個檔案都有很多的時間引數,其中有三個比較主要,分別是ctime,atime,mtime
ctime(
statustime
):
當修改檔案的許可權或者屬性的時候,就會更新這個時間,ctime並不是
createtime
,更像是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執行程序數

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實現網頁壓縮功能
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
200200
;
#按等比例縮小影像的寬或高至指定大小。如果只想設定一個維度,另一維可以指定為:“-”
#注:Nginx的Gzip壓縮功能雖然好用,但是下面兩類檔案資源不太建議啟用此壓縮功能。
1
)圖片/影片型別資源 原因:圖片如jpg、png檔案本身就會有壓縮,所以就算開啟gzip後,壓縮前和壓縮後大小沒有多大區別,所以開啟了反而會白白的浪費資源。
2
)大檔案資源 原因:會消耗大量的cpu資源,且不一定有明顯的效果。

(8)配置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)實驗演練








(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 四層代理轉發模組
