Nginx最佳化與防盜鏈
Nginx最佳化與防盜鏈
一、隱藏版本號
可以使用 Fiddler 工具抓取資料包,檢視 Nginx版本,也可以在 CentOS 中使用命令 curl -I http://192.168.239.20 顯示響應報文首部資訊。
curl -I http://192.168.239.20
1.
修改配置檔案方式
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
server_tokens off; #新增,關閉版本號
......
}
systemctl restart nginx #重啟nginx服務
修改使用者與組
user nginx nginx; #取消註釋,修改使用者為 nginx ,組為 nginx
systemctl restart nginx
ps aux | grep nginx
主程式由root建立,子程式由nginx建立
快取時間
server {
location / {
root html;
index index.html index.htm;
location ~ \.(gif|jpg|jepg|png|bmp|ico)$ { #加入新的 location,以圖片作為快取物件
expires 1d; #指定快取時間,1天
11.
12.
13.
14.
15.
16.
17.
18.
在Linux系統中,開啟火狐瀏覽器,右擊點檢視元素
選擇 網路 —> 選擇 HTML、WS、其他
訪問 http://192.168.239.10 ,雙擊200響應訊息檢視響應頭中包含 Cahce-Control:max-age=86400 表示快取時間是 86400 秒。也就是快取一天的時間,一天之內瀏覽器訪問這個頁面,都是用快取中的資料,而不需要向 Nginx 伺服器重新發出請求,減少了伺服器的使用頻寬。
二、日誌切割
vim /fenge.sh
#!/bin/bash
d=$(date -d "-1 day" "+%Y%m%d") #顯示前一天的時間
logs_path="/var/log/nginx"
pid_path=`cat /usr/local/nginx/logs/nginx.pid`
[ -d $logs_path ] || mkdir -p $logs_path #建立日誌檔案目錄
#移動並重新命名日誌檔案
mv /usr/local/nginx/logs/access.log ${logs_path}/kgc.com-access.log-{$d}
#重建日誌檔案
kill -USR1 $pid_path
#刪除30天前的日誌檔案
find $logs_path -mtime +30 -exec rm -rf {} \;
#find $logs_path -mtime +30 |xargs rm -rf
source fenge.sh
ls /var/log/nginx
ls /usr/local/nginx/logs/access.log
crontab -e
0 1 * * * /root/fenge.sh
在linux作業系統中,每個檔案都有很多的時間引數,其中有三個比較主要,分別是ctime,atime,mtime
ctime(status time):
當修改檔案的許可權或者屬性的時候,就會更新這個時間,ctime並不是create time,更像是change time,
只有當更新檔案的屬性或者許可權的時候才會更新這個時間,但是更改內容的話是不會更新這個時間。
atime(accesstime):
當使用這個檔案的時候就會更新這個時間
mtime(modification time):
當修改檔案的內容資料的時候,就會更新這個時間,而更改許可權或者屬性,mtime不會改變,這就是和ctime的區別。
三、連線超時
HTTP有一個KeepAlive模式,它告訴web伺服器在處理完一個請求後保持這個TCP連線的開啟狀態。若接收到來自客戶端的其它請求,服務端會利用這個未被關閉的連線,而不需要再建立一個連線。
KeepAlive 在一段時間內保持開啟狀態,它們會在這段時間內佔用資源。佔用過多就會影響效能。
keepalive_timeout 65 180;
client_header_timeout 80;
client_body_timeout 80;
keepalive_timeout
指定KeepAlive的超時時間(timeout)。指定每個TCP連線最多可以保持多長時間,伺服器將會在這個時間後關閉連線。 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)。
四、更改程式數
cat /proc/cpuinfo | grep -c "physical id" #檢視cpu核數
ps aux | grep nginx #檢視nginx主程式中包含幾個子程式
worker_processes 2; #修改為核數相同或者2倍
worker_cpu_affinity 01 10; #設定每個程式由不同cpu處理,程式數配2 4 6 8分別為0001 0010 0100 1000
五、配置網頁壓縮
gzip on; #取消註釋,開啟gzip壓縮功能
gzip_min_length 1k; #最小壓縮檔案大小
gzip_buffers 4 16k; #壓縮緩衝區,大小為4個16k緩衝區
gzip_http_version 1.1; #壓縮版本(預設1.1,前端如果是squid2.5請使用1.0)
gzip_comp_level 6; #壓縮比率
gzip_vary on; #支援前端快取伺服器儲存壓縮頁面
gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json; #壓縮型別,表示哪些網頁文件啟用壓縮功能
cd /usr/local/nginx/html
先將game.jpg檔案傳到/usr/local/nginx/html目錄下
vim index.html
<img src="game.jpg"/> #網頁中插入圖片
</body>
</html>
訪問 http://192.168.184.20 ,雙擊200響應訊息檢視響應頭中包含 Content-Encoding: gzip
六、配置防盜鏈
登入後複製
location ~*\.(jpg|gif|swf)$ {
valid_referers *.lic.com lic.com;
if ( $invalid_referer ) {
rewrite ^/
#return 403;
systemctl restart nginx.service
~* .(jpg|gif|jepg|bmp|ico)$ :這段正規表示式表示匹配不區分大小寫,以.jpg 或.gif 或.swf 結尾的檔案;
valid_referers :設定信任的網站,可以正常使用圖片;
後面的網址或者域名 :referer 中包含相關字串的網址;
if語句:如果連結的來源域名不在valid_referers所列出的列表中,$invalid_referer為1,
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22198239/viewspace-2868439/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Nginx——優化與防盜鏈Nginx優化
- Nginx 防盜鏈Nginx
- Linux系統Nginx最佳化與防盜鏈詳細教程LinuxNginx
- Nginx網頁優化與防盜鏈Nginx網頁優化
- [LNMP]Nginx防盜鏈與訪問控制LNMPNginx
- Nginx 優化與防盜鏈實踐教程Nginx優化
- nginx 中防盜鏈設定Nginx
- Nginx中防盜鏈(下載防盜鏈和圖片防盜鏈)及圖片訪問地址操作記錄Nginx
- 為Nginx配置圖片防盜鏈薦Nginx
- Linux系統Apache最佳化與防盜鏈詳細教程LinuxApache
- lighttpd防盜鏈httpd
- 聽說你的資源被盜用了,那你知道 Nginx 怎麼防盜鏈嗎?Nginx
- node實現防盜鏈
- WEB伺服器防盜鏈_HttpAccessKeyModule_Referer(Nginx&&PHP)Web伺服器HTTPNginxPHP
- SpringBoot整合FastDFS+Nginx整合基於Token的防盜鏈Spring BootASTNginx
- 防盜鏈的實現方法
- 利用service worker破解防盜鏈
- 網站防盜鏈專家網站
- c# 圖片防盜鏈C#
- 國產github崩了?是防盜鏈啦~Github
- php防盜鏈幾種程式碼PHP
- Apache防盜鏈的使用和破解Apache
- 一文搞定防盜鏈設計
- [php]referer應用--http防盜鏈技術PHPHTTP
- 微信文章圖片防盜鏈處理方法
- [精選] 用PHP做圖片防盜鏈,你再也盜不了圖片了?PHP
- NodeJS 伺服器實現資源防盜鏈NodeJS伺服器
- 網站盜鏈是什麼?盜鏈與廣告流量問題及如何防止網站
- 七牛 CDN 時間戳防盜鏈簽名實現時間戳
- 小程式專案如何設定資源的防盜鏈?
- 跨域訪問和防盜鏈基本原理(一)跨域
- 跨域訪問和防盜鏈基本原理(二)跨域
- 開源服務lalserver支援多種鑑權防盜鏈方式Server
- 小程式如何設定資源的防盜鏈 — 隨筆小記
- 萬嶽教育-直播教育原始碼中防盜鏈的用處有哪些?原始碼
- lighttpd 對視訊檔案壓縮檔案做防盜鏈薦httpd
- nginx引數詳解與效能最佳化(-)Nginx
- 指紋鎖就安全了?防火防盜還得防AIAI