AWS no puede configurar encabezados a través de Apache

AWS no puede configurar encabezados a través de Apache

Estoy intentando enviar encabezados de respuesta HTTP desde Apache en una instancia EC2 AMI de Amazon Linux 2. Originalmente había intentado hacer esto httpd.confy probé algunas variaciones...

httpd.conf

Header always set X-Frame-Options "SAMEORIGIN"

Pero el encabezado no está configurado. Entonces pensé que tal vez se restablecerían en algún momento, pero al menos .htaccessdeberían poder configurarlos, así que probé un par de variaciones...

.htaccess

Header set ApacheFoo ApacheBar
Header add Strict-Transport-Security "max-age=31104000; includeSubdomains"

Pero nuevamente, ninguno de estos encabezados está establecido.

Sin embargo, si uso PHP para configurar los encabezados, funciona bien...

índice.php:

<?php
header("phpfoo: phpbar");
die(print_r(headers_list(), 1));

Tengo el phpfoo: phpbarencabezado apareciendo en DevTools de Chrome, pero ninguno de los configurados directamente en Apache está configurado.

La .htaccesssolución funciona bien en mi propia configuración local de Windows+Apache, pero no en AWS, por lo que supongo que el problema es específico y me pregunto si hay alguna peculiaridad específica de esta plataforma que deba conocer.

Más información

El módulo de encabezados definitivamente está cargado. Si ejecuto sudo httpd -S(tengo que usar sudopara ejecutar este comando o hay un problema de permiso relacionado con el acceso a un .pemarchivo requerido para SSL, Apache comienza bien, así que supongo que esto no es un problema si está imbuido de sus permisos), este es el resultado (la información específica del host se reemplaza con asteriscos):

VirtualHost configuration:
*:80                   *.com (/etc/httpd/conf/httpd.conf:44)
*:443                  is a NameVirtualHost
         default server ip-*-*-*-*.us-east-2.compute.internal (/etc/httpd/conf.d/ssl.conf:56)
         port 443 namevhost ip-*-*-*-*.us-east-2.compute.internal (/etc/httpd/conf.d/ssl.conf:56)
         port 443 namevhost *.com (/etc/httpd/conf/httpd-le-ssl.conf:2)
                 alias www.*.com
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/etc/httpd/logs/error_log"
Mutex authdigest-opaque: using_defaults
Mutex watchdog-callback: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex authdigest-client: using_defaults
Mutex lua-ivm-shm: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex authn-socache: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/run/httpd/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex cache-socache: using_defaults
PidFile: "/run/httpd/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="apache" id=48
Group: name="apache" id=48

Respuesta1

Mi mejor y única respuesta hasta ahora es: renunciar a Amazon Linux 2.

Después de intentar y no poder configurar un proxy inverso de Nginx con la esperanza de poder configurar los encabezados y solucionar el problema (Amazon Linux 2 parece carecer de las makeutilidades necesarias para compilar mod_rpaf; esta fue la gota que colmó el vaso), creé un nuevo Por ejemplo, usé Ubuntu y comencé un largo proceso de configuración de todo lo que había configurado en Amazon Linux 2; sin embargo, fue relativamente más fácil y menos confuso en Ubuntu y había muchos más tutoriales útiles con los que trabajar en general.

Al final, pude agregar Nginx a la pila como beneficio adicional, ya que tiene un proxy inverso para Apache, y ahora no hay ningún problema al configurar los encabezados en Apache.

Para otras personas que tienen este problema o que están considerando usar AWS para ejecutar un servidor web Apache, mi consejo a partir de esta experiencia es:¡No utilice Amazon Linux 2!

No sólo la configuración de encabezados desde Apache simplemente no parece funcionar (lo cual es clave para habilitar algunas características de seguridad modernas que no dependen del funcionamiento de PHP todo el tiempo), sino que en general todo es mucho más fácil y flexible usando una compilación de Ubuntu. No hay buenos documentos de AWS para la compilación de Ubuntu, pero el resto de Internet lo tiene cubierto y puede aplicarle las partes específicas de AWS (grupos de seguridad, IP elástica y ruta 53) del tutorial de Amazon Linux 2.

información relacionada