Capítulo 1. Configuración del servidor web Apache HTTP
1.1. Introducción al servidor web Apache HTTP
Un web server es un servicio de red que sirve contenidos a un cliente a través de la web. Normalmente se trata de páginas web, pero también se puede servir cualquier otro documento. Los servidores web también se conocen como servidores HTTP, ya que utilizan la dirección hypertext transport protocol (HTTP).
El Apache HTTP Server, httpd
, es un servidor web de código abierto desarrollado por la Apache Software Foundation.
Si está actualizando desde una versión anterior de Red Hat Enterprise Linux, necesitará actualizar la configuración del servicio httpd
en consecuencia. Esta sección revisa algunas de las nuevas características añadidas y le guía a través de la actualización de los archivos de configuración anteriores.
1.1.1. Cambios notables en el servidor HTTP Apache
El sitio web Apache HTTP Serverse ha actualizado de la versión 2.4.6 a la versión 2.4.37 entre RHEL 7 y RHEL 8. Esta versión actualizada incluye varias características nuevas, pero mantiene la compatibilidad con la versión RHEL 7 a nivel de configuración y de la interfaz binaria de aplicación (ABI) de los módulos externos.
Las nuevas características incluyen:
-
la compatibilidad con
HTTP/2
la proporciona ahora el paquetemod_http2
, que forma parte del módulohttpd
. -
se admite la activación de sockets systemd. Consulte la página de manual
httpd.socket(8)
para obtener más detalles.
Se han añadido varios módulos nuevos:
-
mod_proxy_hcheck
- un módulo de comprobación de la salud del proxy -
mod_proxy_uwsgi
- un proxy de la Interfaz del Servidor Web (WSGI) -
mod_proxy_fdpass
- proporciona soporte para pasar el socket del cliente a otro proceso -
mod_cache_socache
- una caché HTTP que utiliza, por ejemplo, memcache backend -
mod_md
- un servicio de certificados SSL/TLS de protocolo ACME
-
Los siguientes módulos ahora se cargan por defecto:
-
mod_request
-
mod_macro
-
mod_watchdog
-
-
Se ha añadido un nuevo subpaquete,
httpd-filesystem
, que contiene la disposición básica de los directorios para el Apache HTTP Server incluyendo los permisos correctos para los directorios. -
Se ha introducido el soporte de servicios instanciados,
httpd@.service
. Consulte la página de manualhttpd.service
para obtener más información.
-
Un nuevo
httpd-init.service
sustituye al%post script
para crear un par de claves autofirmadasmod_ssl
.
-
El aprovisionamiento y la renovación automatizados de certificados TLS mediante el protocolo Automatic Certificate Management Environment (ACME) son ahora compatibles con el paquete
mod_md
(para su uso con proveedores de certificados comoLet’s Encrypt
). -
El sitio web Apache HTTP Server ahora soporta la carga de certificados TLS y claves privadas de tokens de seguridad de hardware directamente desde los módulos
PKCS#11
. Como resultado, una configuración demod_ssl
puede ahora utilizar URLs dePKCS#11
para identificar la clave privada TLS y, opcionalmente, el certificado TLS en las directivasSSLCertificateKeyFile
ySSLCertificateFile
. Ahora se admite una nueva directiva
ListenFree
en el archivo/etc/httpd/conf/httpd.conf
.De forma similar a la directiva
Listen
,ListenFree
proporciona información sobre las direcciones IP, los puertos o las combinaciones de dirección IP y puerto que escucha el servidor. Sin embargo, conListenFree
, la opción de socketIP_FREEBIND
está habilitada por defecto. Por lo tanto, ahttpd
se le permite enlazar con una dirección IP no local o con una dirección IP que aún no existe. Esto permite quehttpd
escuche en un socket sin requerir que la interfaz de red subyacente o la dirección IP dinámica especificada estén activas en el momento en quehttpd
intenta enlazarse a ella.Tenga en cuenta que la directiva
ListenFree
sólo está disponible actualmente en RHEL 8.Para más detalles sobre
ListenFree
, consulte la siguiente tabla:Tabla 1.1. Sintaxis, estado y módulos de la directiva ListenFree Sintaxis Estado Módulos ListenFree [dirección IP:]número de puerto [protocolo]
MPM
evento, trabajador, prefork, mpm_winnt, mpm_netware, mpmt_os2
Otros cambios notables son:
Se han eliminado los siguientes módulos:
-
mod_file_cache
mod_nss
Utilice
mod_ssl
en su lugar. Para más detalles sobre la migración desdemod_nss
, consulte Sección 1.10, “Exportación de una clave privada y de certificados de una base de datos NSS para utilizarlos en una configuración de servidor web Apache”.-
mod_perl
-
-
El tipo por defecto de la base de datos de autenticación DBM utilizada por el Apache HTTP Server en RHEL 8 se ha cambiado de
SDBM
adb5
. -
El módulo
mod_wsgi
para el Apache HTTP Server ha sido actualizado a Python 3. Las aplicaciones WSGI ahora sólo son compatibles con Python 3, y deben ser migradas desde Python 2. El módulo de multiprocesamiento (MPM) configurado por defecto con el Apache HTTP Server ha cambiado de un modelo multiproceso y bifurcado (conocido como
prefork
) a un modelo multihilo de alto rendimiento,event
.Cualquier módulo de terceros que no sea seguro para los hilos debe ser reemplazado o eliminado. Para cambiar el MPM configurado, edite el archivo
/etc/httpd/conf.modules.d/00-mpm.conf
. Consulte la página manhttpd.service(8)
para obtener más información.- Los UID y GID mínimos permitidos para los usuarios por suEXEC son ahora 1000 y 500, respectivamente (antes 100 y 100).
-
El archivo
/etc/sysconfig/httpd
ya no es una interfaz compatible para establecer variables de entorno para el serviciohttpd
. Se ha añadido la página manhttpd.service(8)
para el servicio systemd. -
Al detener el servicio
httpd
se utiliza ahora una "parada elegante" por defecto. -
El módulo
mod_auth_kerb
ha sido sustituido por el módulomod_auth_gssapi
.
1.1.2. Actualización de la configuración
Para actualizar los archivos de configuración desde la Apache HTTP Server versión utilizada en Red Hat Enterprise Linux 7, elija una de las siguientes opciones:
-
Si se utiliza
/etc/sysconfig/httpd
para establecer variables de entorno, cree un archivo drop-in systemd en su lugar. - Si se utilizan módulos de terceros, asegúrese de que son compatibles con un MPM roscado.
- Si se utiliza suexec, asegúrese de que los identificadores de usuario y grupo cumplen los nuevos mínimos.
Puede comprobar la configuración en busca de posibles errores utilizando el siguiente comando:
# apachectl configtest Syntax OK