1. 程式人生 > 其它 >Nginx的優化與防盜鏈

Nginx的優化與防盜鏈

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

  

自古英雄多磨難