Wir haben festgestellt, dass alle https-URLs auf einem CentOS 6 VPS über mehrere virtuelle Hosts hinweg eine 403-Fehlermeldung zurückgeben. Gibt es irgendwo eine Konfigurationseinstellung, nach der ich suchen sollte, um zu überprüfen, was los ist? Oder ein Protokoll, das beim Debuggen hilft?
Antwort1
Ihre Protokolle sind da /var/log/httpd
(Sie müssen „Root“ sein, um sie anzuzeigen). Sie finden access_log
und error_log
dort.
Haben Sie die Berechtigungen für Ihre Dateien festgelegt/überprüft? Die Gruppe apache
sollte diese zumindest lesen können. Wenn ich (Benutzer gareth
) beispielsweise eine Site unter habe , /var/www/html
dann:
$ls -l /var/www/html
-rwxr-----. gareth apache 30 Jun 23 13:35 test.html
Wie Sie sehen, habe ich rw
Zugriff auf die Datei und der Apache-Dienst hat r
Zugriff. Außerdem:-
$ls -ld /var/www/html
drwx--x---. gareth apache 4096 Jun 23 13:35 /var/www/html/
Das Verzeichnis, das die Website enthält, muss über die x
Berechtigung für die apache
Gruppe verfügen, damit Apache das Verzeichnis lesen kann. Ebenso muss das übergeordnete Verzeichnis über die x
Berechtigung verfügen. Und das übergeordnete Verzeichnis des übergeordneten Verzeichnisses usw.
Wenn die Berechtigungen für die Datei in Ordnung sind, prüfen Sie, ob dies SELinux
nicht der Übeltäter ist. Führen Sie Folgendes aus: -
`setenforce 0`
und versuchen Sie es erneut. Wenn es jetzt funktioniert, liegt das Problem an SELinux
. Denken Sie daran, Folgendes auszuführen: -
`setenforce 1`
um SELinux wieder zu aktivieren.
Antwort2
Ein 403-Statuscode zeigt an, dass der Client nicht auf die angeforderte Ressource zugreifen kann. Dies bedeutet normalerweise, dass die Dateien und/oder das Verzeichnis, auf die die URL verweist, nicht über die erforderlichen Berechtigungen verfügen, um dem HTTP-Server den Zugriff zu ermöglichen.
Stellen Sie sicher, dass der vom HTTP-Server verwendete Benutzername/die Gruppe über ausreichende Berechtigungen verfügt, um auf dieses Verzeichnis zuzugreifen. Darüber hinaus sollten Sie Informationen hierzu in sehen /var/log/httpd/access_log
, wenn es sich bei dem HTTP-Server beispielsweise um Apache handelt.
Der Benutzer/die Gruppe von Apache sind in der Konfigurationsdatei definiert /etc/httpd/conf/httpd.conf
.
Beispiel
$ grep -E "^User|^Group" /etc/httpd/conf/httpd.conf
User apache
Group apache
Antwort3
Offenbar gab es ein Problem mit der Installation von mod-spdy-beta_current_x86_64.rpm. Das Entfernen und ein Neustart des Servers haben das Problem behoben.