Nginx的優化與防盜鏈
阿新 • • 發佈:2021-08-15
Nginx的優化與防盜鏈
1、隱藏版本號
2、修改使用者與組
3、快取時間
4、日誌切割
5、連線超時
6、更改程序數
7、配置網頁壓縮
8、配置防盜鏈
9、fpm引數優化
1、隱藏版本號:
可以使用 Fiddler 工具抓取資料包,檢視 Nginx版本,也可以在 CentOS 中使用命令 curl -I http://20.0.0.17 顯示響應報文首部資訊。
curl -I http://20.0.0.20
方法一:修改配置檔案:
vim /usr/local/nginx/conf/nginx.conf http { include mime.types; default_type application/octet-stream; server_tokens off; #新增,關閉版本號 ...... } systemctl restart nginx curl -I http://20.0.0.20
方法二:修改原始碼檔案,重新編譯安裝:
vim /opt/nginx-1.12.0/src/core/nginx.h #define NGINX_VERSION "1.1.1" #修改版本號 #define NGINX_VER "IIS" NGINX_VERSION #修改伺服器型別
cd /opt/nginx-1.12.0/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module make && make install
vim /usr/local/nginx/conf/nginx.conf http { include mime.types; default_type application/octet-stream; server_tokens on; ...... }
systemctl restart nginx curl -I http://20.0.0.17
2、修改使用者組:
vim /usr/local/nginx/conf/nginx.conf user nginx nginx; #取消註釋,修改使用者為 nginx ,組為 nginx systemctl restart nginx ps aux | grep nginx 主程序由root建立,子程序由nginx建立
3、快取時間:
vim /usr/local/nginx/conf/nginx.conf http { ...... server { ...... location / { root html; index index.html index.htm; } location ~ \.(gif|jpg|jepg|png|bmp|ico)$ { #加入新的 location,以圖片作為快取物件 root html; expires 1d; #指定快取時間,1天 } ...... } }
systemctl restart nginx
4、日誌切割:
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
5、連線超時:
HTTP有一個KeepAlive模式,它告訴web伺服器在處理完一個請求後保持這個TCP連線的開啟狀態。若接收到來自客戶端的其它請求,
服務端會利用這個未被關閉的連線,而不需要再建立一個連線。 KeepAlive 在一段時間內保持開啟狀態,它們會在這段時間內佔用資源。
佔用過多就會影響效能。
vim /usr/local/nginx/conf/nginx.conf http { ...... keepalive_timeout 65 180; client_header_timeout 80; client_body_timeout 80; ...... } systemctl restart nginx
6、更改程序數:
cat /proc/cpuinfo | grep -c "physical id" #檢視cpu核數 ps aux | grep nginx #檢視nginx主程序中包含幾個子程序
vim /usr/local/nginx/conf/nginx.conf worker_processes 2; #修改為核數相同或者2倍 worker_cpu_affinity 01 10; #設定每個程序由不同cpu處理,程序數配2 4 6 8分別為0001 0010 0100 1000 systemctl restart nginx
7、配置網頁壓縮:
vim /usr/local/nginx/conf/nginx.conf http { ...... 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> systemctl restart nginx
8、配置防盜鏈:
vim /usr/local/nginx/conf/nginx.conf
http { ...... server { ...... location ~*\.(jpg|gif|swf)$ { valid_referers *.kgc.com kgc.com; if ( $invalid_referer ) { rewrite ^/ http://www.kgc.com/3.png; #return 403; # 可以不設防盜鏈,設定返回403 } } ...... } }
網頁準備:
Web源主機(20.0.0.20)配置:
cd /usr/local/nginx/html
將game.jpg、error.png檔案傳到/usr/local/nginx/html目錄下
vim index.html
盜鏈網站主機(20.0.0.22):
cd /var/www/html
vim index.html
...... <img src="http://www.kgc.com/1.jpg"/> </body> </html>
echo "192.168.80.200 www.kgc.com" >> /etc/hosts echo "192.168.80.111 www.clj.com" >> /etc/hosts
9、fpm引數優化:
vim /usr/local/php/etc/php-fpm.conf pid = run/php-fpm.pid vim /usr/local/php/etc/php-fpm.d/www.conf
96行:
pm = dynamic #fpm程序啟動方式,動態的
107行:
pm.max_children=20 #fpm程序啟動的最大程序數
112行:
pm.start_servers = 5 #動態方式下啟動時預設開啟的程序數,在最小和最大之間
117行:
pm.min_spare_servers = 2 #動態方式下最小空閒程序數
122行:
pm.max_spare_servers = 8 #動態方式下最大空閒程序數 kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` #重啟php-fpm netstat -anpt | grep 9000
自古英雄多磨難