Por que optimizar el servidor web
Apache y Nginx son los servidores web mas utilizados en entornos Linux. La configuracion predeterminada de ambos esta diseñada para funcionar en una amplia variedad de escenarios, pero no necesariamente optimizada para el caso de uso especifico del servidor. Ajustar la configuracion segun los recursos disponibles (RAM, CPU, tipo de trafico) puede reducir significativamente el tiempo de respuesta, aumentar la capacidad de conexiones simultaneas y estabilizar el servidor bajo carga alta.
Optimizacion de Apache
El archivo de configuracion principal de Apache se encuentra en /etc/apache2/apache2.conf (Ubuntu) o /etc/httpd/conf/httpd.conf (CentOS/AlmaLinux).
Elegir el MPM correcto
Apache tiene tres modulos de multiprocesamiento (MPM) principales:
| MPM | Mejor para | Uso de memoria |
|---|---|---|
| prefork | Compatibilidad con PHP sin FPM (mod_php) | Alto |
| worker | Trafico alto con bajo uso de PHP | Medio |
| event | Trafico alto con PHP-FPM (recomendado) | Bajo |
Configuracion recomendada para MPM Event con PHP-FPM
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 0
Optimizacion de Nginx
Nginx es conocido por su eficiencia en el manejo de conexiones concurrentes con bajo uso de recursos. El archivo de configuracion principal esta en /etc/nginx/nginx.conf.
worker_processes auto; # Un worker por nucleo de CPU worker_connections 1024; # Conexiones por worker keepalive_timeout 65; client_max_body_size 64m; # Tamaño maximo de subida # Compresion gzip gzip on; gzip_types text/plain text/css application/json application/javascript text/xml; gzip_comp_level 6;
Activar el cache de paginas estaticas en Nginx
# En el bloque location
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
expires 1y;
add_header Cache-Control "public, no-transform";
}
Verificar la configuracion antes de reiniciar
# Verificar sintaxis de Apache apachectl configtest # Verificar sintaxis de Nginx nginx -t # Aplicar cambios systemctl reload apache2 systemctl reload nginx
