Nginx——優化與防盜鏈
Nginx——優化與防盜鏈
一.配置Ngin隱藏版本號
1.隱藏版本號,避免安全漏洞
2.Nginx隱藏版本號方法
修改配置法
修改原始碼法
二.修改配置檔案法
1.將Nginx配置檔案中server-tokens選項改為off
[]vim /usr/local/nginx/conf/nginx.conf
[]nginx -t; //檢查語法
2.重啟服務,訪問網路使用curl -I http://localhost命令檢測
[]systemctl restart nginx
3.方法二
vim /usr/local/nginx/conf/nginx.conf
http{
server_tokens on; //修改此選項為on
}
vim /opt/nginx-1.12.2/src/core/nginx.h
cd /opt/nginx-1.12.2
make && make install
使用curl -I http://localhost命令檢測
三.修改Nginx使用者和組
1.Nginx執行時程式需要有使用者和組的支援,以實現對網站檔案的讀取進行訪問控制。
2.Nginx預設使用Nobody使用者賬號與組賬號。
3.修改方法
編譯安裝時指定使用者和組
修改配置檔案指定使用者和組
4.編譯安裝時指定
./configure --user=nginx --group=nginx
5.修改配置檔案法指定
1.建立新的使用者賬號,如nginx
2.修改主配置檔案user選項,指定使用者賬號和組賬號
3.重啟nginx服務,使配置生效
4.使用ps aux命令檢視nginx的程式資訊,驗證執行使用者賬號改變效果。
命令過程:
vim /usr/local/nginx/conf/nginx.conf
ps aux | grep nginx ##檢視效果
四.配置Nginx網頁快取時間
1.配置意義
當Nginx將網頁資料返回給客戶端後,可設定快取時間,以方便在日後進行相同內容的請求時,避免重複請求,加快訪問速度。
2.一般針對的時靜態網頁設定,對動態網頁不設定快取時間。
3.配置過程
[]vim /usr/local/nginx/conf/nginx.conf
location ~\.(gif|jpg|jepg|png|bmp|ico)${
root html;
expires 1d; //快取時間一天
}
cd /user/loca/nginx/html
vi index.html
<img src="a.png.png" /> //在body裡面加入
systemctl restart nginx
4.測試
在瀏覽器裡面輸入IP地址,使用抓包工具進行抓。
5.設定方法
修改配置檔案,在http段,或者server段,或者location段加如特點內容的過期引數。
五. 實現Nginx的日誌分割
1.隨著Nginx執行時間的增加,日誌也會增加,為了方便掌握Nginx執行狀態,需要時刻關注Nginx日誌檔案。
2.太大的日誌檔案對檢測是一個大災難。
解決方式:定期進行日誌分割
3.Nginx自身不具備日誌切割處理的能力,但可以通過Nginx訊號控制功能的指令碼實現日誌的自動切割。
4.通過Linux的計劃任務週期性進行日誌切割
5.編寫指令碼進行日誌切割的思路
1.設定時間變數
2.設定儲存日誌的路徑
3.將目前的日誌檔案進行重新命名
4.重建新日誌檔案
5.刪除時間過長的檔案
6.設定cron任務,定期執行指令碼,自動進行日誌分割。
1.配置過程
[]vim /opt/fenge.sh
#!/bin/bash
#日誌分割
d=$(date -d "-1 day" "+%Y%m%d")
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ] || mkdir -p $logs_path
mv /usr/local/nginx/logs/access.log ${logs_path}/aa.com.access.log-$d
kill -HUP $(cat $pid_path) //重新載入服務
find $logs_path -mtime +30 | xargs rm -rf //強力刪除,-mtime:當修改檔案的內容資料時,就會更新這個時間。
// 補充:-exec:刪除後面的內容,加上i,是立即執行的意思
// 例:-exec rm -i {}\
which sh
crotab -e
0 1 * * * /usr/bin/sh /root/fenge.sh
//分鐘 時 日 月 星期
六.配置Nginx實現連線超時
為避免同一客戶端長時間佔用連線,造成資源浪費,可設定相應的連線超時引數,實現控制連線訪問的時間。
1.超時引數
1.keep_header_timeout 65 100:前面引數伺服器主動關閉的超時時間,後面引數是客戶機瀏覽主動關閉的時間。
2.client_header_timeout 80:等待客戶端傳送請求頭的超時時間,超過傳送408錯誤。
3.client_body_timeout 80:設定客戶端傳送請求體超時時間。
2.配置命令
vi /etc/nginx.conf
keepalive_timeout 65 180;
client_header_timeout 80;
client_body_timeout 80;
3.測試
重啟服務,在瀏覽器輸入IP地址,使用抓包工具進行抓包。
systemctl stop nginx.service
systemctl start nginx.service
七.更改Nginx執行程式數
在高併發場景,需要啟動更多的Nginx程式以保證快速響應,以處理使用者的請求,避免造成堵塞。
1.配置方式
修改配置檔案
修改程式配置引數
2.修改配置檔案的worker_processes引數
1.一般設為cpu的個數或者核數
2.在高併發情況下可設定為cpu個數或者或者核數的2倍
3.增加程式數,可減少系統的開銷,提升服務速度。
4.配置命令
vi /usr/local/nginx/conf/nginx.conf
ulimit -u 65535 >> /etc/rc.local //修改最大限制
nginx -t //檢查語法
5.驗證
systemctl restart nginx.service
ps aux | grep nginx
八.配置網頁壓縮功能
1.Nginx的ngx_http_gizp_module壓縮模組提供對檔案內容壓縮的功能。
2.允許Nginx伺服器將輸出內容在傳送客戶端之前進行壓縮,以節約網路的頻寬,提升使用者的訪問體驗,預設已經安裝。
3.可在配置檔案中加入相應的壓縮功能引數對壓縮效能進行優化。
1.壓縮引數
1.gzip on:開啟gzip壓縮輸出
2.gzip_min_length 1k:設定允許壓縮的頁面最小位元組數
3.gzip_buffers 4 16k:申請4個單位為16k的記憶體作為壓縮結果 流快取,預設值是申請與原始資料大小相同的記憶體空間來儲存 gzip壓縮結果
4.gzip_http_version 1.0:設定識別http協議版本,預設是1.1,目前大部分瀏覽器已經支援gzip解壓,但處理較慢,也比較消耗伺服器CPU資源
5.gzip_comp_level 2:指定gzip壓縮比,1壓縮比最小,處理速度最快;9壓縮比最大,傳輸速度快,但處理速度最慢 。
6.gzip_types text/plain:壓縮型別,對哪些網頁文件啟用壓縮功能
7.gzip_vary on:讓前端快取伺服器快取經過gzip壓縮的頁面
2.配置命令
vim /usr/local/nginx/conf/nginx.conf
gzip on; //開啟gzip壓縮功能
gzip_min_length 1k; //壓縮閾值
gzip_buffers 4 16k; //buffer 大小為4個16k緩衝區
gzip_http_version 1.1; //壓縮版本
gzip_comp_level 6; //壓縮比率,最小為1,最大為9
gzip_types text/plain application/x-javascript text/css image/jpg image/jpeg image/png image/gif application/xml text/javascript application/x-httpd-php application/ javascript application/json;
gzip_disable "MSIE [1-6]\."; //配置禁用gzip條件,支援正則,表示ie6以下的不啟用gzip
gzip_vary on; //選擇支援very header 可以讓前端的快取伺服器快取經過gzip壓縮的頁面。
nginx -t //測試語法
systemctl restart nginx //重啟服務
3.測試
瀏覽器輸入IP地址,使用抓包工具進行抓包。
九.配置Nginx防盜鏈
1.配置說明
1. ~*\.(jpg|gif|swf)$:匹配以.jpg或.gif或.swf結尾的不區分大小寫的檔案
2.valid_referers:設定信任的網站,即能引用相應圖片的網站
3.網址或者域名: referer中包含相關字串的網址
4.if語句:如果連結的來源域名不在valid_referers所列出的列表中,$invalid_referer為1,則執行後面的操作,即進行重寫或返回403頁面
2.配置命令
vim /usr/local/nginx/conf/nginx.conf
location ~* \.(gif|swf||jpg)$ {
valid_referers none blocked *.aa.com aa.com 192.168.52.13;
if ($invalid_referer) {
rewrite ^/ http://www.aa.com/error.png;
}
相關文章
- Nginx網頁優化與防盜鏈Nginx網頁優化
- Nginx 優化與防盜鏈實踐教程Nginx優化
- Nginx最佳化與防盜鏈Nginx
- Nginx 防盜鏈Nginx
- [LNMP]Nginx防盜鏈與訪問控制LNMPNginx
- nginx 中防盜鏈設定Nginx
- Linux系統Nginx最佳化與防盜鏈詳細教程LinuxNginx
- Nginx中防盜鏈(下載防盜鏈和圖片防盜鏈)及圖片訪問地址操作記錄Nginx
- 為Nginx配置圖片防盜鏈薦Nginx
- lighttpd防盜鏈httpd
- 聽說你的資源被盜用了,那你知道 Nginx 怎麼防盜鏈嗎?Nginx
- node實現防盜鏈
- Linux系統Apache最佳化與防盜鏈詳細教程LinuxApache
- WEB伺服器防盜鏈_HttpAccessKeyModule_Referer(Nginx&&PHP)Web伺服器HTTPNginxPHP
- 防盜鏈的實現方法
- 利用service worker破解防盜鏈
- 網站防盜鏈專家網站
- c# 圖片防盜鏈C#
- SpringBoot整合FastDFS+Nginx整合基於Token的防盜鏈Spring BootASTNginx
- 國產github崩了?是防盜鏈啦~Github
- php防盜鏈幾種程式碼PHP
- Apache防盜鏈的使用和破解Apache
- 一文搞定防盜鏈設計
- nginx快取與優化Nginx快取優化
- Nginx安全優化與效能調優Nginx優化
- [php]referer應用--http防盜鏈技術PHPHTTP
- 微信文章圖片防盜鏈處理方法
- [精選] 用PHP做圖片防盜鏈,你再也盜不了圖片了?PHP
- NodeJS 伺服器實現資源防盜鏈NodeJS伺服器
- springboot整合FastDFS使用實現防盜鏈功能Spring BootAST
- 網站盜鏈是什麼?盜鏈與廣告流量問題及如何防止網站
- 七牛 CDN 時間戳防盜鏈簽名實現時間戳
- 小程式專案如何設定資源的防盜鏈?
- 跨域訪問和防盜鏈基本原理(一)跨域
- 跨域訪問和防盜鏈基本原理(二)跨域
- Nginx效能優化Nginx優化
- 開源服務lalserver支援多種鑑權防盜鏈方式Server
- 微信圖片防盜鏈解決方案:自建代理繞過限制。