it-swarm.com.de

Apache VirtualHost 403 verboten

Ich habe kürzlich versucht, einen Testserver mit Apache einzurichten. Die Site muss unter der Domain www.mytest.com Laufen. Ich erhalte immer die Fehlermeldung 403 Forbidden. Ich bin auf Ubuntu 10.10 Server Edition. Das doc-Stammverzeichnis 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 Host-Datei 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 config

<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 .htaccess - Datei in meinem Doc-Stammverzeichnis. Die Berechtigungen sind korrekt gesetzt (lesbar von www-data).

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.com Auf die IP des Servers verweist. Wenn ich es benutze, erhalte ich 403. Da viele Funktionen dieser Site sitenamensensitiv sind, muss ich in der Lage sein, über den Domainnamen auf die Site zuzugreifen.

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

Ich stecke fest. Kann jemand helfen?

112
Yuchen Wang

Apache 2.4.3 (oder etwas früher) hat eine neue Sicherheitsfunktion hinzugefügt, die häufig zu diesem Fehler führt. Außerdem wird eine Protokollmeldung mit der Form "Client von Serverkonfiguration abgelehnt" angezeigt. Für diese Funktion ist eine Benutzeridentität erforderlich, um auf ein Verzeichnis zugreifen zu können. Es wird von DEFAULT in der httpd.conf aktiviert, die mit Apache geliefert wird. Sie können die Aktivierung der Funktion mit 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 verweigerte Direktive (oder fügen Sie die folgende Direktive zu den Verzeichnissen hinzu, auf die Sie Zugriff gewähren möchten:

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>
277
Phil L

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>
13
GAV

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 this page über Apache 403-Fehler.

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

8
Pops

Verschieben Sie die Directory-Klausel aus dem virtualhost und platzieren Sie sie, bevor Sie den virtualhost deklarieren.

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

5
samtresler

Ich hatte das gleiche Problem mit einem virtuellen Host unter Ubuntu 14.04

Bei mir hat folgende Lösung funktioniert:

http://ubuntuforums.org/showthread.php?t=2185282

Es fügt nur ein <Directory > Tag zu /etc/Apache2/Apache2.conf

0
Roland

Das Problem war, dass die Dateizugriffsberechtigung falsch war.

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

0

Ich habe nur ein paar Stunden mit diesem blöden Problem verbracht

Ändern Sie zunächst die Berechtigungen, indem Sie dies 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

/usr/local/Apache2/htdocs 

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

Das ist auch das andere blöde Ding

stellen Sie sicher, dass Ihr Bild-Quelllink 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 in die 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 die 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

Wenn Sie alles richtig gemacht haben, geben Sie einfach die Erlaubnis Home-Verzeichnis wie:

Sudo chmod o+x $HOME

dann

Sudo systemctl restart Apache2
0
cagcak