Nginx es uno de los servidores web más populares en la actualidad. Su popularidad se debe al hecho de que es muy rápido y fácil de configurar. Otro lado de esta popularidad - nginx a menudo es objeto de ataques maliciosos. Entonces, si tu nginx no está limitado por los recursos disponibles, su servidor puede "caerse" totalmente cuando nginx gastó todos los recursos del sistema. Por eso debes controlar y limitar los recursos Nginx consumado.
Todos los límites están establecidos en nginx archivo de configuración. Lo describiré en Ubuntu 20.04 como ejemplo. Todos los cambios se realizarán en /etc/ nginx/nginx.conf archivo. Cada directiva debe terminar con un punto y coma. Voy a describir lo más importante parametros más.
La configuración global
Esta configuración afectará a todo el servidor. PensilvaniaramLa descripción de eters es:
- conexiones_trabajador - esta opción define cuántas conexiones simultáneas son posibles para un trabajador ("unidad" especial que se comunica entre nginx y núcleo del sistema operativo). Los trabajadores cuentan depende de cuánto CPU núcleos y RAM disponible en su servidor;
- multi_aceptar - esta directiva permite a los trabajadores manejar algunos procesos simultáneamente. Creará una cola de procesos, las tareas se manejarán una por una;
- mutex_accept_delay - este parameter define un retraso entre el reinicio de las tareas manejadas;
- utilizan el - un método de procesamiento. El mejor conjunto para Linux servidores es epoll;
- conexión_límite - esta directiva limitará las conexiones. Se puede establecer en varios lugares, todas las restricciones estarán funcionando. En la captura de pantalla a continuación, establecí conexiones totales como 5 por una IP y 2 para /descargar carpeta:
Operaciones de disco
Estos ajustes definen cómo nginx operar con unidad de disco:
- enviar archivo en - esta opción le permite al servidor web "intercambiar" datos de archivos pequeños en el kernel space, sin enviarlo a la aplicación spaCe. Hace nginx manejo de datos mucho más rápido;
- todo en - esta directiva proporciona operaciones de disco de lectura/escritura de subprocesos múltiples.
Compresión y almacenamiento en caché
Puede almacenar en caché algunos datos para hacer nginx más rápido. La compresión reducirá el flujo de tráfico:
- gzip en - esta opción activa la compresión;
- gzip_comp_level - nivel de compresión. Un conteo más alto es mucha compresión;
- tipos_gzip - definir los tipos de archivos a comprimir. Por ejemplo, el texto es bueno para comprimir, pero las imágenes no.
- abrir_archivo_caché - permitir el almacenamiento en caché de archivos;
- abrir_archivo_caché_válido - tiempo para almacenar caché;
- abrir_archivo_caché_errores - esta opción permite almacenar en caché errores como "acceso denegado". Puede ser útil para prevenir ataques masivos de conexiones simultáneas;
Configuraciones de seguridad
Puede restringir el acceso a raspadores, bots, descargadores, etc. Simplemente agregue una construcción como la siguiente a la ubicación restringida:
if ($http_user_agent ~* LWP::curl|wget|*bot) {
return 403;
}
Además, puede permitir el acceso a algunas áreas del sitio web solo a través de direcciones IP definidas. Podría ser útil para restringir el acceso al área de administración, por ejemplo:
location /admin/ {
## allow access from your IP
allow xxx.xxx.xxx.xxx/32;
## drop all other connections
deny all;
}
Conclusión
En este artículo describí cómo optimizar su nginx funciona y dio algunos consejos sobre las mejoras de seguridad base.