Red Hat Training

A Red Hat training course is available for RHEL 8

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 conHTTP/2 la proporciona ahora el paquete mod_http2, que forma parte del módulo httpd.
  • 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 manual httpd.service para obtener más información.
  • Un nuevo httpd-init.service sustituye al %post script para crear un par de claves autofirmadas mod_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 como Let’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 de mod_ssl puede ahora utilizar URLs de PKCS#11 para identificar la clave privada TLS y, opcionalmente, el certificado TLS en las directivas SSLCertificateKeyFile y SSLCertificateFile.
  • 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, con ListenFree, la opción de socket IP_FREEBIND está habilitada por defecto. Por lo tanto, a httpd se le permite enlazar con una dirección IP no local o con una dirección IP que aún no existe. Esto permite que httpd 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 que httpd 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

    SintaxisEstadoMó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:

  • 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 a db5.
  • 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 man httpd.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 servicio httpd. Se ha añadido la página man httpd.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ódulo mod_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