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 [email protected]
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?

Yuchen Wang
quelle
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>
Phil L.
quelle
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>
GAV
quelle
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 .

Pops
quelle
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.

Samtresler
quelle
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
Cagcak
quelle
0

Das Problem war, dass die Dateizugriffsberechtigung falsch war.

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

Sebastian Viereck
quelle
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.

TornaxO7
quelle
-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

Jacob David C. Cunningham
quelle