Optimización Nginx y anti-sanguijuela

Optimización Nginx y anti-sanguijuela

Uno, oculta el número de versión

(1) Verifique el número de versión de nginx

Windows puede usar la herramienta Fiddler para tomar paquetes de datos y verificar la versión de Nginx,
o usar el comando curl -I http://192.168.126.10 en CentOS para mostrar la información del encabezado del mensaje de respuesta.

curl -I http://192.168.126.10

Inserte la descripción de la imagen aquí

(2) Método de modificación del número de versión oculto

1. Método 1: modificar el método del archivo de configuración

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://192.168.126.10

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2. Método 2: modificar el archivo fuente, recompilarlo e instalarlo

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://192.168.126.10

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Dos, modificar usuarios y grupos

vim /usr/local/nginx/conf/nginx.conf
user nginx nginx; 								#取消注释,修改用户为 nginx ,组为 nginx
systemctl restart nginx
ps aux | grep nginx
主进程由root创建,子进程由nginx创建

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Tres, tiempo de caché

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

En el sistema Linux, abra el navegador Firefox, haga clic con el botón derecho y haga clic para ver los elementos.
Seleccione Red -> seleccione HTML, WS y otro
acceso http://192.168.80.10, haga doble clic en el mensaje de respuesta 200 para ver que el encabezado de respuesta contiene Cahce-Control: max-age = 86400 significa que el tiempo de caché es 86400 segundos. Es decir para almacenar en caché la hora de un día, el navegador accede a esta página dentro de un día, todos usan los datos en el caché, sin necesidad de volver a emitir una solicitud al servidor Nginx, reduciendo el ancho de banda del servidor.

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Cuatro, corte de troncos

vim /opt/fenge.sh
#!/bin/bash

#Filename: fenge.sh

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}/kgc.com-access.log-$d		#移动并重命名日志文件
kill -USR1 $(cat $pid_path)													#重建新日志文件
find $logs_path -mtime +30 -exec rm -rf {
    
    } \;								#删除30天之前的日志文件
#find $logs_path -mtime +30 |xargs rm -rf 
chmod +x /opt/fenge.sh
/opt/fenge.sh
ls /var/log/nginx
ls/usr/local/nginx/logs/access.log 
crontab -e
0 1 * * * /opt/fenge.sh

-------------------------------------------------- consejos------------------------------------------------ -
en los sistemas operativos Linux, cada archivo tiene una gran cantidad de parámetros de tiempo, que tienen tres comparaciones principales, son ctime, atime, mtime

ctime (tiempo de estado):
cuando se modifican los permisos o atributos del archivo, este tiempo se actualizará. ctime no es el tiempo de creación, más como el tiempo de cambio.
Este tiempo solo se actualizará cuando se actualicen los atributos o permisos del archivo. Sin embargo, esta hora no se actualizará si se cambia el contenido.

atime (accesstime):
Este tiempo se actualizará cuando se utilice este archivo.

mtime (hora de modificación):
Cuando se modifican los datos de contenido del archivo, esta hora se actualizará, y si se cambian los permisos o atributos, mtime no cambiará, esta es la diferencia con ctime.

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Cinco, tiempo de espera de conexión

HTTP tiene un modo KeepAlive, que le dice al servidor web que mantenga abierta la conexión TCP después de procesar una solicitud. Si recibe otras solicitudes del cliente, el servidor utilizará esta conexión no cerrada sin establecer otra conexión.
KeepAlive permanece abierto durante un período de tiempo y ocuparán recursos durante este período. El uso excesivo afectará el rendimiento.

vim /usr/local/nginx/conf/nginx.conf
http {
    
    
...... 
    keepalive_timeout 65 180;
    client_header_timeout 80;
    client_body_timeout 80;
...... 
}
systemctl restart nginx
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)。

Seis, cambia el número de procesos

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处理,进程数配为4时0001 0010 0100 1000
systemctl restart nginx

Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

Siete, configure la compresión de la página web

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

En el sistema Linux, abra el navegador Firefox, haga clic con el botón derecho y haga clic para ver los elementos.
Seleccione Red -> Seleccionar HTML, WS, Otros.
Visite http://192.168.126.10 y haga doble clic en el mensaje de respuesta 200 para ver que el encabezado de respuesta contiene Codificación de contenido: gzip

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Ocho, configure la cadena antirrobo

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/error.png;
				#return 403;
            }
        }
	......
	}

}
~* \.(jpg|gif|swf)$ :这段正则表达式表示匹配不区分大小写,以.jpg 或.gif 或.swf 结尾的文件;
valid_referers :设置信任的网站,可以正常使用图片;
后面的网址或者域名 :referer 中包含相关字符串的网址;

if语句:如果链接的来源域名不在valid_referers所列出的列表中,$invalid_referer为1,则执行后面的操作,即进行重写或返回 403 页面。
网页准备:
Web源主机(192.168.80.10)配置:
cd /usr/local/nginx/html
将game.jpg、error.png文件传到/usr/local/nginx/html目录下
vim index.html
...... 
<img src="kobe.jpg"/>
</body>
</html>
echo "192.168.126.10 www.chenwei.com" >> /etc/hosts 
echo "192.168.126.20 www.mm.com" >> /etc/hosts 
盗链网站主机(192.168.80.11):
cd /usr/local/nginx/html
vim index.html
...... 
<img src="http://www.chenwei.com/game.jpg"/>
</body>
</html>
echo "192.168.126.10 www.chenwei.com" >> /etc/hosts 
echo "192.168.126.20 www.mm.com" >> /etc/hosts 
在盗图网站主机上进行浏览器验证
http://www.mm.com

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Nueve, optimización de parámetros de 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

Supongo que te gusta

Origin blog.csdn.net/weixin_51573771/article/details/112577876
Recomendado
Clasificación