Nginx網頁優化與防盜鏈
Nginx網頁優化與防盜鏈
Nginx服務優化
配置Nginx隱藏版本號
隱藏Nginx版本號,避免安全漏洞洩漏
Nginx隱藏版本號的方法
- 修改配置檔案法
vi /etc/nginx.conf
server_tokens off; # 在http下新增 如下圖
- 修改原始碼法
vi /etc/nginx.conf
server_tokens on;#http下
vi nginx-1.12.2/src/core/nginx.h
#define nginx_version 1112012 # 版本資訊
#define NGINX_VERSION "1.1.1" # 版本號
#define NGINX_VER "IIS/" NGINX_VERSION # 版本髮型平臺
systemctl stop nginx.service # 需要關閉nginx服務然後重新編譯安裝
cd nginx-1.12.2/
make && make install
systemctl start nginx
curl -I http://20.0.0.13
修改前
修改後
驗證
修改Nginx使用者與組
- Nginx執行時程式需要有使用者與組的支援,以實現對網站檔案讀取時進行訪問控制
- Nginx預設使用nobody使用者賬號與組賬號
- 修改的方法
- 編譯安裝時指定使用者與組
- 修改配置檔案指定使用者與組
修改配置檔案法指定
- 新建使用者賬號,如nginx
- 修改主配置檔案user選項,指定使用者賬號與組賬號
- 重啟nginx服務,使配置生效
- 使用ps aux命令檢視nginx的程式資訊,驗證執行使用者賬號改變效果
配置Nginx網頁快取時間
網頁快取設定作用
- 當Nginx將網頁資料返回給客戶端後,可設定快取的時間,以方便在日後進行相同內容的請求時直接返回,避免重複請求,加快了訪問速度
- 一般針對靜態網頁設定,對動態網頁不設定快取時間
網頁快取設定方法
網頁設定快取時間
加入一張圖片
訪問測試
實現Nginx的日誌切割
- 隨著Nginx執行時間增加,日誌也會增加。為了方便掌握Nginx執行狀態,需要時刻關注Nginx日誌檔案
- 太大的日誌檔案對監控是一個大災難
- 定期進行日誌檔案的切割
- Nginx自身不具備日誌分割處理的功能,但可以通過Nginx訊號控制功能的指令碼實現日誌的自動切割
- 通過Linux的計劃任務週期性地進行日誌切割
日誌分割的方法
編寫指令碼進行日誌切割的思路:
- 設定時間變數
- 設定儲存日誌路徑
- 將目前的日誌檔案進行重新命名
- 重建新日誌檔案
- 刪除時間過長的日誌檔案
- 設定cron任務,定期執行指令碼自動進行日誌分割
通過指令碼來實現日誌分割的效果
檢視日誌檔案
vi rizhi.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 $logs_path
mv /usr/local/nginx/logs/aa.com.access.log ${logs_path}/aa.com.access.log-$d
kill -HUP $(cat $pid_path)
find $logs_path -mtime +60 | xargs rm -rf
chmod +x rizhi.sh
cd /usr/local/nginx/logs/
chmod +x access.log
./rizhi.sh
通過crontab任務計劃來實現定時實現指令碼的執行
Nginx深入優化
配置Nginx實現連線超時
- 為避免同一客戶端長時間佔用連線,造成資源浪費,可設定相應的連線超時引數,實現控制連線訪問時間
- 超時引數
- Keepalive_ timeout 設定連線保持超時時間
- Client header timeout 指定等待客戶端傳送請求頭的超時時間
- Client body_ _timeout 設定請求體讀超時時間
配置檔案
[root@server3 ~]# vi /etc/nginx.conf
[root@server3 ~]# nginx -t
[root@server3 ~]# systemctl stop nginx
[root@server3 ~]# systemctl start nginx
新增修改
keepalive_timeout 65 180; 前面引數是伺服器主動關閉的超時時間(預設是65秒),後面引數是客戶機瀏覽器主動關閉的時間
client_header_timeout 80; 等待客戶端傳送請求頭的超時時間超時會傳送408錯誤
client_body_timeout 80; 設定客戶端傳送請求體超時時間
訪問測試抓包
更改Nginx執行程式數
在高併發場景,需要啟動更多的Nginx程式以保證快速響應,以處理使用者的請求,避免造成阻塞
更改程式數
- 一般設為CPU的個數或者核數
- 在高併發情況下可設定為CPU個數或者核數的2倍
- 增加程式數,可減少了系統的開銷,提升了服務速度
- 使用ps aux檢視執行程式數的變化情況
- 預設情況,Nginx的多 個程式可能跑在一-個CPU上,可以分配不同的程式給不同的CPU處理,充分利用硬體多核多CPU
- 在一臺4核物理伺服器,進行配置,將程式進行分配
更改程式數的配置方法
- 修改配置檔案,修改程式配置引數
- 修改配置檔案的worker_ processes引數
檢視CPU或者核數
[root@server3 ~]# cat /proc/cpuinfo | grep -c "physical"
[root@server3 ~]# vi /etc/nginx.conf
[root@server3 ~]# nginx -t
[root@server3 ~]# systemctl stop nginx
[root@server3 ~]# systemctl start nginx
[root@server3 ~]# ps aux | grep nginx 檢視狀態
新增
worker_processes 8; 工作程式
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; CPU或者核的分配情況
use epoll;
worker_connections 4096;
配置Nginx實現網頁壓縮功能
-
Nginx的ngx_http_gzip_module壓縮模組提供對檔案內容壓縮的功能
-
允許Nginx伺服器將輸出內容在傳送客戶端之前進行壓縮,以節省網站頻寬,提升使用者的訪問體驗,預設已經安裝
-
可在配置檔案中加入相應的壓縮功能引數對壓縮效能進行優化
壓縮功能引數
壓縮引數 | 說明 |
---|---|
gzip on | 開啟gzip壓縮輸出 |
gzip_ min_ length 1k | 設定允許壓縮的頁面最小位元組數 |
gzip__buffers 4 16k | 申請4個單位為16k的記憶體作為壓縮結果流快取,預設值是申請與始資料大小相同的記憶體空間來儲存gzip壓縮結果 |
gzip_ http_ version 1.0 | 設定識別http協議版本,預設是1.1,目前大部分瀏覽器已經支援gzip解壓,但處理較慢,也比較消耗伺服器CPU資源 |
gzip_ comp_ level 2 | 指定gzip壓縮比,1壓縮比最小,處理速度最快; 9壓縮比最大,傳輸速度快,但處理速度最慢 |
gzip_ types text/plain: | 壓縮型別,對哪些網頁文件啟用壓縮功能 |
gzip_vary on | 讓前端快取伺服器快取經過gzip壓縮的頁面 |
壓縮配置
[root@server3 ~]# vi /etc/nginx.conf
[root@server3 ~]# nginx -t
[root@server3 ~]# systemctl stop nginx
[root@server3 ~]# systemctl start nginx
新增修改
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 text/css text/javascript application/x-javascript application/javascript application/json application/x-httpd-php application/xml image/jpg image/jpeg image/gif image/png;
gzip_disable "MSIE [1-6]\."; 配置禁用gzip條件,支援正則,表示ie6以下不啟用gzip
gzip_vary on; 選擇支援very header可以讓前端的快取伺服器快取經過gzip壓縮的頁面
配置Nginx實現防盜鏈
- 在企業網站服務中,一般都要配置防盜鏈功能,以避免網站內容被非法盜用,造成經濟損失
- Nginx防盜鏈功能也非常強大。預設情況下,只需要進行簡單的配置,即可實現防盜鏈處理
- 配置流程
- 配置Nginx實現防盜鏈
- 重啟服務,再次訪問圖片,檢測防盜效果
- 配置說明
- ~* .(jpg|gif|swf)$:匹配以.jpg或.swf結尾的不區分大小寫的檔案
- valid_referes:設定信任的網站,即能引用相應圖片的網站
- 網址或者域名:referer中包含相關字串的網址
- if語句:如果連結的來源域名不在valid_referers所列出的列表中,$invalid_referer為1,則執行後面的操作,即進行重寫或返回403頁面
配置檔案
[root@server3 ~]# vi /etc/nginx.conf
[root@server3 ~]# nginx -tul
[root@server3 ~]# systemctl stop nginx
[root@server3 ~]# systemctl start nginx
[root@server3 ~]# cd /usr/local/nginx/html/
[root@server3 html]# ls -lh
主機上訪問
20.0.0.13
盜鏈機上訪問
20.0.0.15
對FPM模組進行引數優化
-
Nginx的PHP解析功能實現如果是交由FPM處理的,為了提高PHP的處理速度, 可對FPM模組進行引數的調整
-
根據伺服器的記憶體與服務負載,調整FPM模組引數
-
啟動fpm程式方式,通過pm引數指定
- static:將產生固定數量的fpm程式 (靜態)
- dynamic:將以動態的方式產生fpm程式 (動態)
FPM優化引數
Static的方式的引數
- pm.max_children: 指定啟動的程式數量
Dynamic方式的引數
- pm.max_children:指定啟動程式數的最大值
- pm.start_servers: 動態方式下初始的fpm程式數
- pm.min_spare_servers: 動態方式下最小的fpm空閒程式數
- pm.max_spare_servers: 動態方式下最大的fpm空閒程式數
在論壇安裝裝置上操作
動態方式
編輯配置檔案
[root@server1 php-fpm.d]# vi www.conf
[root@server1 php-fpm.d]# cd
pm = dynamic
pm.max_children = 20 static模式下空閒程式數上限,大於下面的值
pm.start_servers = 5 動態方式下預設開啟的程式數,在最小和最大之間
pm.min_spare_servers = 2 動態方式下最少空閒程式數
pm.max_spare_servers = 8 動態方式下最大空閒程式數
相關文章
- Nginx——優化與防盜鏈Nginx優化
- Nginx 優化與防盜鏈實踐教程Nginx優化
- Nginx最佳化與防盜鏈Nginx
- Nginx 防盜鏈Nginx
- [LNMP]Nginx防盜鏈與訪問控制LNMPNginx
- nginx 中防盜鏈設定Nginx
- Linux系統Nginx最佳化與防盜鏈詳細教程LinuxNginx
- Nginx中防盜鏈(下載防盜鏈和圖片防盜鏈)及圖片訪問地址操作記錄Nginx
- 為Nginx配置圖片防盜鏈薦Nginx
- 網站防盜鏈專家網站
- lighttpd防盜鏈httpd
- Apache網頁優化與安全優化Apache網頁優化
- 聽說你的資源被盜用了,那你知道 Nginx 怎麼防盜鏈嗎?Nginx
- node實現防盜鏈
- Linux系統Apache最佳化與防盜鏈詳細教程LinuxApache
- WEB伺服器防盜鏈_HttpAccessKeyModule_Referer(Nginx&&PHP)Web伺服器HTTPNginxPHP
- Apache網頁與安全優化Apache網頁優化
- 防盜鏈的實現方法
- 利用service worker破解防盜鏈
- c# 圖片防盜鏈C#
- SpringBoot整合FastDFS+Nginx整合基於Token的防盜鏈Spring BootASTNginx
- 國產github崩了?是防盜鏈啦~Github
- php防盜鏈幾種程式碼PHP
- Apache防盜鏈的使用和破解Apache
- 以Referer方案寫一個圖片防盜鏈服務並實現網頁端"破解"網頁
- 以Referer方案寫一個圖片防盜鏈服務並實現網頁端”破解”網頁
- 網站盜鏈是什麼?盜鏈與廣告流量問題及如何防止網站
- 一文搞定防盜鏈設計
- nginx快取與優化Nginx快取優化
- Nginx安全優化與效能調優Nginx優化
- 網頁效能優化網頁優化
- apache網頁優化Apache網頁優化
- [php]referer應用--http防盜鏈技術PHPHTTP
- 微信文章圖片防盜鏈處理方法
- 如何優化網頁轉化率?優化網頁
- [精選] 用PHP做圖片防盜鏈,你再也盜不了圖片了?PHP
- NodeJS 伺服器實現資源防盜鏈NodeJS伺服器
- springboot整合FastDFS使用實現防盜鏈功能Spring BootAST