Cinco escenarios de aplicaciones comunes de Nginx, por favor marque la operación y mantenimiento de Linux ~

Inserte la descripción de la imagen aquí

Nginx es un servicio de proxy inverso y web de alto rendimiento muy potente. Tiene muchas características muy superiores. En el caso de conexiones de alta concurrencia, Nginx es una buena alternativa a los servicios de Apache. Sus características son que ocupa menos memoria y tiene fuertes capacidades de concurrencia. De hecho, las capacidades de concurrencia de nginx funcionan mejor en el mismo tipo de servidor web. Por lo tanto, fabricantes nacionales de renombre como Taobao, JD, Baidu, Sina, Netease, Tencent , etc. Utilice el sitio web de Nginx.

En nuestro trabajo y estudio diario, ¿cómo optimizaremos nuestro servidor Nginx? ¿Cómo debemos lidiar con los siguientes problemas?

1. Personaliza la página de error 404 devuelta al cliente.

1) Antes de la optimización, cuando el cliente usa un navegador para acceder a una página que no existe, le indicará el archivo 404 no encontrado

# firefox http://192.168.4.5/xxxxx //访问一个不存在的页面

2) Modifique el archivo de configuración de Nginx y personalice la página de error

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
 charset utf-8;                    //仅在需要中文时修改该选项
error_page   404  /404.html;    //自定义错误页面
.. ..
# vim /usr/local/nginx/html/404.html  //生成错误页面
Oops,No NO no page …
# nginx -s reload
# 请先确保 nginx 是启动状态,否则运行该命令会报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

3) Después de la optimización, el cliente usará el navegador para visitar una página que no existe, y mostrará la página 40x.html definida por él mismo.

# firefox http://192.168.4.5/xxxxx //访问一个不存在的页面

Los códigos de estado http comunes se pueden mostrar en la tabla de referencia

Inserte la descripción de la imagen aquí

Dos, ver información sobre el estado del servidor

1) Utilice –with-http_stub_status_module para abrir el módulo de la página de estado al compilar e instalar

# tar -zxvf nginx-1.12.2.tar.gz
# cd nginx-1.12.2
# ./configure   
> --with-http_ssl_module           //开启SSL加密功能
> --with-stream                    //开启TCP/UDP代理模块
> --with-http_stub_status_module   //开启status状态页面
# make && make install             //编译并安装

2) Habilite el servicio Nginx y vea el estado del puerto de escucha

El comando ss puede ver la información de los puertos iniciados en el sistema. Las opciones comunes de este comando son las siguientes:

-a muestra todos los puertos de información
-n el número de puerto se muestra en un formato digital
-t muestra la conexión del puerto TCP
-u muestra el puerto UDP conectado
-l muestra que el servicio está escuchando la información del puerto, como el inicio de httpd, y escuchando port 80
- p Muestra cuál es el nombre del servicio del puerto de escucha (es decir, el nombre del programa)
Nota: En el sistema RHEL7, puede usar el comando ss para reemplazar el comando netstat, con la misma función y las mismas opciones.

# /usr/local/nginx/sbin/nginx
# netstat  -anptu  |  grep nginx
tcp        0        0 0.0.0.0:80        0.0.0.0:*        LISTEN        10441/nginx
# ss  -anptu  |  grep nginx

3) Modifique el archivo de configuración de Nginx y defina la página de estado

# cat /usr/local/nginx/conf/nginx.conf
… …
location /status {
    
    
 stub_status on;
 #allow IP地址;
 #deny IP地址;
 }
… …
# /usr/local/nginx/sbin/nginx -s reload

4) Después de la optimización, verifique la información de la página de estado

# curl  http://192.168.4.5/status
Active connections: 1 
server accepts handled requests
 10 10 3 
Reading: 0 Writing: 1 Waiting: 0

Conexiones activas: el número de conexiones activas actualmente.
Acepta: el número total de conexiones de cliente que se han aceptado.
Manejado: el número total de conexiones de cliente que se han procesado.
(Generalmente lo mismo que acepta, a menos que el servidor limite el número de conexiones).
Solicitudes: el número de solicitudes enviadas por el cliente.
Leyendo: el servidor actual está leyendo el número de encabezados de solicitud de cliente.
Escritura: la cantidad de mensajes de respuesta que el servidor está escribiendo actualmente.
En espera: cuántos clientes están esperando actualmente una respuesta del servidor.

3. Optimiza la concurrencia de Nginx

1) Utilice una prueba de alta concurrencia antes de la optimización

# ab -n 2000 -c 2000 http://192.168.4.5/
Benchmarking 192.168.4.5 (be patient)
socket: Too many open files (24)                //提示打开文件数量过多

2) Modifique el archivo de configuración de Nginx para aumentar la cantidad de simultaneidad

# vim /usr/local/nginx/conf/nginx.conf
.. ..
worker_processes  2;                    //与CPU核心数量一致
events {
    
    
worker_connections 65535;        //每个worker最大并发连接数
}
.. ..
# /usr/local/nginx/sbin/nginx -s reload

3) Optimizar los parámetros del kernel de Linux (número máximo de archivos)

# ulimit -a                        //查看所有属性值
# ulimit -Hn 100000                //设置硬限制(临时规则)
# ulimit -Sn 100000                //设置软限制(临时规则)
# vim /etc/security/limits.conf
 .. ..
*               soft    nofile            100000
*               hard    nofile            100000
#该配置文件分4列,分别如下:10.#用户或组    硬限制或软限制    需要限制的项目   限制的值

4) Pruebe la concurrencia del servidor después de la optimización (debido a que el cliente no ajustó los parámetros del kernel, se probó en el proxy)

# ab -n 2000 -c 2000 http://192.168.4.5/

Cuarto, optimice el almacenamiento en caché de encabezados de paquetes Nginx

1) Antes de la optimización, use el script para probar si la solicitud de encabezado largo puede obtener una respuesta

[root@proxy ~]# cat lnmp_soft/buffer.sh 
#!/bin/bash
URL=http://192.168.4.5/index.html?
for i in {
    
    1..5000}
do
 URL=${
    
    URL}v$i=$i
done
curl $URL                                //经过5000次循环后,生成一个长的URL地址栏
[root@proxy ~]# ./buffer.sh
.. ..
<center><h1>414 Request-URI Too Large</h1></center>        //提示头部信息过大

2) Modifique el archivo de configuración de Nginx para aumentar el tamaño de la caché del encabezado del paquete

# vim /usr/local/nginx/conf/nginx.conf
... ..
http {
    
    
client_header_buffer_size    1k;        //默认请求包头信息的缓存 
large_client_header_buffers  4 4k;        //大请求包头部信息的缓存个数与容量
.. ..
}
# /usr/local/nginx/sbin/nginx -s reload

3) Después de la optimización, use el script para probar si la solicitud de encabezado largo puede obtener una respuesta

1.[root@proxy ~]# cat buffer.sh 
2.#!/bin/bash
3.URL=http://192.168.4.5/index.html?
4.for i in {
    
    1..5000}
5.do
6.    URL=${
    
    URL}v$i=$i
7.done
8.curl $URL
9.[root@proxy ~]# ./buffer.sh

Cinco, el navegador almacena en caché datos estáticos localmente

1) Usa Firefox para ver el caché

Tomando el navegador Firefox como ejemplo, al ingresar about: cache en la barra de direcciones de Firefox se mostrará la información de la caché del navegador Firefox, como se muestra en la figura, haga clic en Listar entradas de caché para ver la información detallada.

Inserte la descripción de la imagen aquí

2) Borre los datos de la caché local de Firefox, como se muestra en la figura.

Inserte la descripción de la imagen aquí

3) Cambie el archivo de configuración de Nginx para definir el tiempo de caché para las páginas estáticas

# vim /usr/local/nginx/conf/nginx.conf
server {
    
    
 listen       80;
 server_name  localhost;
 location / {
    
    
 root   html;
 index  index.html index.htm;
 }
location ~* .(jpg|jpeg|gif|png|css|js|ico|xml)$ {
    
    
expires       30d;            //定义客户端缓存时间为30天
}
}
# cp /usr/share/backgrounds/day.jpg /usr/local/nginx/html
# /usr/local/nginx/sbin/nginx -s reload
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:16.#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

4) Después de la optimización, use el navegador Firefox para acceder a la imagen y verifique la información de la caché nuevamente

# firefox http://192.168.4.5/day.jpg

Ingrese about: cache en la barra de direcciones de Firefox, verifique los datos de la caché local, verifique si hay imágenes y si el tiempo de vencimiento es correcto.

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/liuxingjiaoyu/article/details/112674758
Recomendado
Clasificación