Para muchas empresas, Nginx + Apache + PHP es un paquete muy típico y generalizado, y Timeweb no es una excepción aquí. Sin embargo, descubrir exactamente cómo se implementa puede ser interesante y gratificante.
El uso de dicho paquete está, por supuesto, dictado por las necesidades de nuestros clientes. Tanto Nginx como Apache juegan un papel especial, cada uno resolviendo un problema específico.
La configuración principal de Apache se realiza en los archivos de configuración del propio Apache, y la configuración de los sitios cliente se realiza a través del archivo .htaccess... .htaccess es un archivo de configuración en el que el cliente puede configurar de forma independiente las reglas y el comportamiento del servidor web. Esta configuración será específica de su sitio. Por ejemplo, gracias a la funcionalidad de Apache, los usuarios pueden cambiar el modo operativo dentro de la misma versión de PHP de mod_php a mod_cgi; puede personalizar redirecciones, optimización SEO, URL conveniente, algunos límites para PHP.
Nginx se utiliza como servidor proxy para redirigir el tráfico a Apache y como servidor web para ofrecer contenido estático. También para Nginx, hemos desarrollado módulos de seguridad que nos permiten proteger los datos de nuestros usuarios, por ejemplo, para separar derechos de acceso.
Imaginemos que algún usuario visita el sitio de nuestro cliente. Primero, el usuario va a Nginx, que ofrece contenido estático. Sucede instantáneamente. Luego, cuando se trata de cargar PHP, Nginx redirige la solicitud a Apache. Y Apache, junto con PHP, ya genera contenido dinámico.
Características del paquete Apache y Nginx en Timeweb
Nuestro alojamiento virtual implementa 2 esquemas principales para Apache y Nginx: Compartido y Dedicado .
Esquema compartido Este esquema se utiliza para la mayoría de los usuarios. Se distingue por su sencillez e intensidad de recursos: el esquema Compartido utiliza menos recursos, por lo que su tarifa también es más barata. De acuerdo con este esquema, se está ejecutando un Nginx en el servidor, lo que permite atender todas las solicitudes de los usuarios y varias instancias de Apache.
El esquema compartido ha ido mejorando durante mucho tiempo: gradualmente arreglamos las deficiencias. Convenientemente, se puede hacer sin tener que modificar el código fuente. Esquema
compartido
Esquema dedicado
Dedicado requiere más recursos, por lo que su tarifa es más cara para los clientes. En el esquema dedicado, se genera un Apache independiente para cada cliente. Los recursos aquí están reservados para el cliente, se asignan exclusivamente. Cómo funciona: Hay varias versiones de PHP en el servidor. Admitimos las versiones 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Entonces, para cada versión de PHP, se inicia su propio Apache.
Esquema dedicado
Zona segura. Configuración de zonas en Nginx
Anteriormente, usábamos muchas zonas de memoria compartida (zonas) para Nginx: un bloque de servidor por dominio. Esta configuración requiere muchos recursos, ya que se crea una zona separada para cada sitio. Sin embargo, en la configuración de Nginx, la mayoría de los sitios son del mismo tipo, por lo que se pueden colocar en una zona gracias al uso de directivas de mapa en ngx_http_map_module , que le permiten establecer asignaciones. Por ejemplo, tenemos una plantilla de zona a la que debemos proporcionar variables: ruta al sitio, versión de PHP, usuario. Así, se ha acelerado la relectura de la configuración de Nginx, es decir, la recarga.
Esta configuración ahorró en gran medida los recursos de RAM e hizo que Nginx funcionara más rápido.
¡La recarga no funcionará!
En el esquema Compartido, nos deshicimos de la necesidad de recargar (recargar) Apache al cambiar la configuración del sitio. Anteriormente, cuando un cliente quería agregar un dominio o cambiar la versión de PHP, se requería una recarga obligatoria de Apache, lo que generaba retrasos en las respuestas y afectaba negativamente el rendimiento del sitio.
Nos deshicimos de las recargas creando configuraciones dinámicas. Gracias a mpm-itk (módulo de Apache), cada proceso se ejecuta desde un usuario separado, lo que aumenta el nivel de seguridad. Este método le permite transferir datos sobre el usuario y su document_root de Nginx a Apache2. Por lo tanto, Apache no contiene configuraciones de sitios, las recibe dinámicamente y ya no es necesario volver a cargarlas.
Configuración de esquema compartido
¿Y Docker?
Muchas empresas se han trasladado a un sistema basado en contenedores. Timeweb está considerando actualmente la posibilidad de tal transición. Por supuesto, existen pros y contras en cada solución.
Junto con las innegables ventajas, el sistema de contenedores proporciona al usuario menos recursos. En Timeweb, gracias al esquema de operación de hosting descrito, el usuario no tiene límite de memoria. Recibe más recursos que el contenedor. Además, el usuario puede tener más módulos de Apache cargados.
Timeweb impulsa alrededor de 500.000 sitios web. Asumimos una gran responsabilidad y no realizamos cambios instantáneos e innecesarios en una arquitectura compleja. El paquete Apache & Nginx es confiable y probado en el tiempo. Nosotros, a su vez, nos esforzamos por lograr el máximo rendimiento a través de configuraciones únicas.
Para un trabajo rápido y de alta calidad en una gran cantidad de sitios, debe utilizar la plantilla y la configuración dinámica de Apache y Nginx. Le permite administrar fácil y rápidamente una gran cantidad de servidores similares.