
Estou tentando enviar cabeçalhos de resposta HTTP do Apache em uma instância Amazon Linux 2 AMI EC2. Eu originalmente tentei fazer isso httpd.conf
e tentei algumas variações ...
httpd.conf
Header always set X-Frame-Options "SAMEORIGIN"
Mas o cabeçalho não está definido. Então imaginei que talvez eles fossem redefinidos em algum momento, mas pelo menos .htaccess
deveriam ser capazes de configurá-los, então tentei algumas variações...
.htaccess
Header set ApacheFoo ApacheBar
Header add Strict-Transport-Security "max-age=31104000; includeSubdomains"
Mas, novamente, nenhum desses cabeçalhos está definido.
No entanto, se eu usar PHP para definir os cabeçalhos, funciona bem...
index.php:
<?php
header("phpfoo: phpbar");
die(print_r(headers_list(), 1));
O phpfoo: phpbar
cabeçalho aparece no DevTools do Chrome, mas nenhum dos definidos diretamente no Apache foi definido.
A .htaccess
solução funciona bem em minha própria configuração local do Windows + Apache, mas não na AWS, então presumo que o problema seja específico dela e estou me perguntando se há alguma peculiaridade específica desta plataforma que eu preciso saber.
Mais informações
O módulo Headers está definitivamente carregado. Se eu executar sudo httpd -S
(tenho que usar sudo
para executar este comando ou há um problema de permissão relacionado ao acesso a um .pem
arquivo necessário para SSL, o Apache inicia bem, então presumo que isso não seja um problema se estiver imbuído de suas permissões), esta é a saída (informações específicas do host substituídas por 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
Responder1
Minha melhor e única resposta até agora é: desista do Amazon Linux 2.
Depois de tentar e não conseguir configurar um proxy reverso Nginx nele, na esperança de que pudesse definir os cabeçalhos e solucionar o problema (o Amazon Linux 2 parece não ter os make
utilitários necessários para construir mod_rpaf
- esta foi a gota d'água), criei um novo Por exemplo, usando o Ubuntu e iniciei um longo processo de configuração de tudo o que havia configurado no Amazon Linux 2, no entanto, foi relativamente mais fácil e menos confuso no Ubuntu e havia muito mais tutoriais úteis para trabalhar em geral.
No final, acabei conseguindo adicionar o Nginx à pilha como um bônus, tendo-o como proxy reverso para o Apache, e agora não há nenhum problema ao definir cabeçalhos no Apache.
Para outras pessoas que estão tendo esse problema ou que estão considerando usar a AWS para executar um servidor web Apache, meu conselho com esta experiência é:não use Amazon Linux 2!
A configuração de cabeçalhos do Apache não apenas parece não funcionar (o que é fundamental para ativar alguns recursos de segurança modernos que não dependem do funcionamento do PHP o tempo todo), mas em geral tudo é muito mais fácil e flexível usando uma versão do Ubuntu. Não existem bons documentos da AWS para a construção do Ubuntu, mas o resto da Internet tem tudo para você e você pode aplicar as partes específicas da AWS (grupos de segurança, IP elástico e rota 53) do tutorial do Amazon Linux 2 a ele.