AWS kann keine Header über Apache festlegen

AWS kann keine Header über Apache festlegen

Ich versuche, HTTP-Antwortheader von Apache an eine Amazon Linux 2 AMI EC2-Instanz zu senden. Ich hatte dies ursprünglich in versucht httpd.confund einige Variationen ausprobiert ...

httpd.conf

Header always set X-Frame-Options "SAMEORIGIN"

Aber der Header ist nicht gesetzt. Also dachte ich, dass sie vielleicht irgendwann zurückgesetzt werden, aber zumindest .htaccesssollte man sie setzen können, also habe ich ein paar Variationen ausprobiert ...

.htaccess

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

Aber wiederum ist keiner dieser Header gesetzt.

Wenn ich jedoch PHP zum Festlegen der Header verwende, funktioniert es einwandfrei ...

index.php:

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

Bei mir wird der phpfoo: phpbarHeader in den DevTools von Chrome angezeigt, aber keiner der direkt in Apache festgelegten Header wurde festgelegt.

Die .htaccessLösung funktioniert auf meinem eigenen lokalen Windows+Apache-Setup einwandfrei, aber nicht auf AWS. Daher gehe ich davon aus, dass das Problem dort spezifisch ist, und frage mich, ob es irgendwelche plattformspezifischen Eigenheiten gibt, die ich kennen sollte.

Mehr Info

Das Header-Modul ist definitiv geladen. Wenn ich es ausführe sudo httpd -S(ich muss sudodiesen Befehl ausführen oder es gibt ein Berechtigungsproblem beim Zugriff auf eine .pemfür SSL erforderliche Datei, Apache startet einwandfrei, daher gehe ich davon aus, dass dies kein Problem ist, wenn es mit seinen Berechtigungen ausgestattet ist), ist dies die Ausgabe (hostspezifische Informationen durch Sternchen ersetzt):

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

Antwort1

Meine beste und einzige Antwort bisher ist: Geben Sie Amazon Linux 2 auf.

Nachdem ich erfolglos versucht hatte, einen Nginx-Reverse-Proxy darauf einzurichten, in der Hoffnung, dass dieser die Header festlegen und das Problem umgehen könnte (Amazon Linux 2 scheinen die erforderlichen makeDienstprogramme zum Erstellen zu fehlen mod_rpaf– das war der Tropfen, der das Fass zum Überlaufen brachte), erstellte ich mit Ubuntu eine neue Instanz und begann einen langwierigen Prozess, um alles einzurichten, was ich auf Amazon Linux 2 eingerichtet hatte. Unter Ubuntu war es jedoch relativ einfacher und weniger verwirrend und es gab allgemein viel mehr hilfreiche Tutorials, mit denen man arbeiten konnte.

Am Ende konnte ich Nginx als Bonus zum Stack hinzufügen, sodass es als Reverse-Proxy für Apache fungiert und es nun überhaupt kein Problem mehr mit dem Festlegen von Headern in Apache gibt.

An alle, die dieses Problem haben oder die AWS zum Betreiben eines Apache-Webservers in Betracht ziehen, lautet mein Rat aus Erfahrung:verwenden Sie nicht Amazon Linux 2!

Nicht nur, dass das Setzen von Headern von Apache einfach nicht zu funktionieren scheint (was der Schlüssel zum Aktivieren einiger moderner Sicherheitsfunktionen ist, die nicht davon abhängen, dass PHP ständig funktioniert), sondern im Allgemeinen ist alles mit einem Ubuntu-Build viel einfacher und flexibler. Es gibt keine guten AWS-Dokumente für den Ubuntu-Build, aber der Rest des Internets bietet Ihnen alles und Sie können die AWS-spezifischen Teile (Sicherheitsgruppen, elastische IP und Route 53) des Amazon Linux 2-Tutorials darauf anwenden.

verwandte Informationen