Apache VirtualHost 403 Verboten


123

Ich habe kürzlich versucht, einen Testserver mit Apache einzurichten. Die Site muss unter Domain ausgeführt werden www.mytest.com. Ich bekomme immer einen 403 ForbiddenFehler. Ich bin auf Ubuntu 10.10 Server Edition. Das Dokumentstammverzeichnis befindet sich unter dir /var/www. Folgendes sind meine Einstellungen:

Inhalt von / var / www

ls -l /var/www/

total 12
drwxr-xr-x 2 root root 4096 2011-08-04 11:26 mytest.com
-rwxr-xr-x 1 root root 177 2011-07-25 16:10 index.html

Inhalt der Hostdatei auf dem Server (mit IP 192.168.2.5)

cat /etc/hosts

127.0.0.1 localhost 
127.0.1.1 americano
192.168.2.5 americano.mytest.com www.mytest.com

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Site-Konfiguration

<VirtualHost *>
ServerAdmin admin@mytest.com
ServerName www.mytest.com
ServerAlias mytest.com

DocumentRoot "/var/www/mytest.com"

ErrorLog /var/log/apache2/mytest-error_log
CustomLog /var/log/apache2/mytest-access_log combined

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/var/www/mytest.com">
Options -Indexes FollowSymLinks
AllowOverride None

Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Ich habe keine .htaccessDatei in meinem Dokumentstamm. Die Berechtigungen sind korrekt eingestellt (lesbar durch www-Daten).

Wenn ich die IP-Adresse von meinem Desktop aus eingebe, wird die Site korrekt angezeigt. Ich habe die Hosts-Datei auf meinem Desktop so geändert, dass sie www.mytest.comauf die IP des Servers verweist. Wenn ich es benutze, bekomme ich 403. Da viele Funktionen dieser Site vom Site-Namen abhängig sind, muss ich über den Domain-Namen auf die Site zugreifen können.

Eine andere seltsame Sache ist, dass alle Protokolldateien, selbst wenn sie ordnungsgemäß erstellt wurden, keine Informationen zu diesem Fehler enthalten.

Ich stecke fest. Kann jemand helfen?


können Sie den Inhalt hinzufügen von: sudo sh -c ". /etc/apache2/envvars; apache2 -S"(Liste der Virtualhosts) und:sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""
Regilero

Der erste Befehl gibt Folgendes zurück: VirtualHost configuration: 192.168.2.5:* www.mytest.com (/etc/apache2/sites-enabled/mytest.com:1) Syntax OK Der zweite Befehl gibt zurück: /etc/apache2/ports.conf:Listen 80 /etc/apache2/ports.conf: Listen 443 /etc/apache2/ports.conf: Listen 443 /etc/apache2/conf.d/virtual.conf:NameVirtualHost *
Yuchen Wang

1
versuchen Sie es auf serverfault.com
regilero

Antworten:


296

Apache 2.4.3 (oder möglicherweise etwas früher) hat eine neue Sicherheitsfunktion hinzugefügt, die häufig zu diesem Fehler führt. Außerdem wird eine Protokollmeldung des Formulars "Client von Serverkonfiguration abgelehnt" angezeigt. Für die Funktion ist eine Benutzeridentität erforderlich, um auf ein Verzeichnis zugreifen zu können. Es wird von DEFAULT in der mit Apache gelieferten httpd.conf aktiviert. Sie können die Aktivierung der Funktion anhand der Direktive sehen

Require all denied

Dies bedeutet im Grunde, allen Benutzern den Zugriff zu verweigern. Um dieses Problem zu beheben, entfernen Sie entweder die abgelehnte Direktive (oder viel besser) und fügen Sie den Verzeichnissen, auf die Sie Zugriff gewähren möchten, die folgende Direktive hinzu:

Require all granted

wie in

<Directory "your directory here">
   Order allow,deny
   Allow from all
   # New directive needed in Apache 2.4.3: 
   Require all granted
</Directory>

3
Ich möchte darauf hinweisen, dass Sie, wenn Sie dieses Problem bei der Verwendung virtueller Hosts haben, den Einstellungen für virtuelle Hosts in der Datei apache / conf / extra / httpd-vhosts.conf die Option "Alle gewährten erforderlich" hinzufügen müssen.
Soundfx4

1
Ich habe diese Richtlinie hinzugefügt /etc/apache2/apache2.confund es hat geholfen, danke!
DmitMedv

@ Soundfx4, es gibt keinen Ordner namens apache/conf/extrainnerhalb/etc/apache2
Black

Ich hatte /var/dev/website.com hinzugefügt und bekam 403 Fehler. Das Hinzufügen der vorgeschlagenen Direktive zu /etc/apache2/apache2.conf (ubuntu) hat den Trick getan. Danke Leute!
LoveFineArt

Danke mein Herr. Apache ist
heutzutage immer

15

Für Apache Ubuntu 2.4.7 habe ich endlich festgestellt, dass Sie Ihren virtuellen Host in apache2.conf auf die weiße Liste setzen müssen

# access here, or in any related virtual host.
<Directory /home/gav/public_html/>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

8

Dies kann ein Berechtigungsproblem sein.

Jeder einzelne übergeordnete Pfad zum Stamm des virtuellen Dokuments muss vom httpd-Benutzer des Webservers lesbar, beschreibbar und ausführbar sein

Laut dieser Seite über Apache 403-Fehler.

Da Sie verwenden Allow from all, sollte Ihre Bestellung keine Rolle spielen, aber Sie können versuchen, sie zu ändern Deny,Allow, um das Standardverhalten auf "Zulassen" zu setzen .


4
Schreibbar? Ja wirklich? Ich bin nicht sicher
php-dev

5

Verschieben Sie die Directory-Klausel aus dem virtualhost und fügen Sie sie ein, bevor Sie den virtualhost deklarieren.

Hat mich auch lange verrückt gemacht. Ich weiß nicht warum. Es ist eine Debian-Sache.


Woah, das ist so komisch.
Kako-Nawao


0

Wenn Sie alles richtig gemacht haben, geben Sie einfach das Berechtigungs-Ausgangsverzeichnis wie folgt ein:

sudo chmod o+x $HOME

dann

sudo systemctl restart apache2

0

Das Problem war, dass die Dateizugriffsberechtigung falsch war.

Ich habe die Berechtigungen des Verzeichnisses geändert und es hat funktioniert.


0

Ich hatte dieses Problem auch unter Arch Linux ... es kostet mich einige Zeit, aber ich bin froh, dass ich meinen Fehler gefunden habe:

Mein Verzeichnis mit den .htmlDateien befand sich in meinem Konto.
Ich habe alles eingestellt, r+xaber ich habe immer noch den 403Fehler.
Dann ging ich komplett zurück und versuchte mein Home-Verzeichnis so einzustellen , dass es ausgeführt wurde, was mein Problem löste.


-1

Ich habe gerade einige Stunden mit diesem dummen Problem verbracht

Ändern Sie zunächst die Berechtigungen, indem Sie diese im Terminal verwenden

find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +

Ich weiß nicht, was der Unterschied zwischen 664 und 775 ist. Ich habe beide 775 so gemacht. Außerdem benötigt htdocs den Verzeichnispfad, zum Beispiel für mich

/usr/local/apache2/htdocs 

find htdocs -type f -exec chmod 775 {} + -o -type d -exec chmod 775 {} +

Dies ist auch die andere dumme Sache

Stellen Sie sicher, dass Ihr Image-src-Link beispielsweise Ihr Domain-Name ist

src="http://www.fakedomain.com/images/photo.png"

Seien Sie sicher zu haben

EnableSendfile off in httpd.conf file
EnableMMAP off in httpd.conf file

Sie bearbeiten diese mit pico im Terminal

Ich habe auch ein Verzeichnis für Bilder erstellt, damit Sie beim Eingeben der Adressleiste des Browsers domainname.com/images eine Liste der Fotos erhalten, die heruntergeladen werden können und erfolgreich heruntergeladen werden müssen, um anzuzeigen, dass Bilddateien ordnungsgemäß funktionieren

<Directory /usr/local/apache2/htdocs/images>
AddType images/png .png
</Directory>

Und das sind die Lösungen, die ich ausprobiert habe, jetzt habe ich funktionierende Bilder ... yay !!!

Auf die nächsten Probleme

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.