Apache VirtualHost 403 Proibito


123

Recentemente ho provato a configurare un server di prova con Apache. Il sito deve essere eseguito sotto dominio www.mytest.com. Ottengo sempre un 403 Forbiddenerrore. Sono su Ubuntu 10.10 server edition. La doc root è sotto dir /var/www. Le seguenti sono le mie impostazioni:

Contenuto di / 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

Contenuto del file host sul server (con 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

Configurazione del sito

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

Non ho .htaccessfile nella mia doc root. I permessi sono impostati correttamente (leggibili da www-data).

Se digito l'indirizzo IP dal desktop, il sito viene visualizzato correttamente. Ho modificato il file hosts sul desktop in modo che punti www.mytest.comall'IP del server. Quando lo uso, ottengo 403. Poiché molte funzioni di questo sito sono sensibili al nome del sito, devo essere in grado di accedere al sito tramite il nome di dominio.

Un'altra cosa strana è che, anche se tutti i file di registro vengono creati correttamente, non hanno informazioni su questo errore.

Sono bloccato. Qualcuno può aiutare?


puoi aggiungere il contenuto di: sudo sh -c ". /etc/apache2/envvars; apache2 -S"(elenco di Virtualhosts) e:sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""
regilero

Il primo comando restituisce quanto segue: VirtualHost configuration: 192.168.2.5:* www.mytest.com (/etc/apache2/sites-enabled/mytest.com:1) Syntax OK Il secondo restituisce: /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

Risposte:


296

Apache 2.4.3 (o forse leggermente precedente) ha aggiunto una nuova funzionalità di sicurezza che spesso si traduce in questo errore. Verrà inoltre visualizzato un messaggio di registro del formato "client negato dalla configurazione del server". La funzionalità richiede un'identità utente per accedere a una directory. È attivato da DEFAULT nel httpd.conf fornito con Apache. Puoi vedere l'abilitazione della funzione con la direttiva

Require all denied

Questo fondamentalmente dice di negare l'accesso a tutti gli utenti. Per risolvere questo problema, rimuovere la direttiva negata (o molto meglio) aggiungere la seguente direttiva alle directory a cui si desidera concedere l'accesso:

Require all granted

come in

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

3
Vorrei sottolineare che se hai questo problema con gli host virtuali, dovrai aggiungere "Richiedi tutti i dati concessi" alle impostazioni di ciascun host virtuale all'interno del file apache / conf / extra / httpd-vhosts.conf.
Soundfx4

1
Ho aggiunto questa direttiva /etc/apache2/apache2.confe mi ha aiutato, grazie!
DmitMedv

@ Soundfx4, non c'è nessuna cartella chiamata apache/conf/extraall'interno/etc/apache2
Nero

Avevo aggiunto /var/dev/website.com e ricevevo l'errore 403. L'aggiunta della direttiva suggerita a /etc/apache2/apache2.conf (ubuntu) ha funzionato. Grazie ragazzi!
LoveFineArt

Grazie Signore. Apache è sempre più difficile lavorare in questi giorni ...
OoDeLally

15

Per apache Ubuntu 2.4.7, ho finalmente scoperto che devi inserire nella lista bianca il tuo host virtuale in apache2.conf

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

8

Questo potrebbe essere un problema di autorizzazioni.

ogni singolo percorso genitore della radice del documento virtuale deve essere leggibile, scrivibile ed eseguibile dall'utente httpd del server web

secondo questa pagina sugli errori di Apache 403.

Dal momento che stai utilizzando Allow from all, il tuo ordine non dovrebbe avere importanza, ma potresti provare a cambiarlo in Deny,Allowper impostare il comportamento predefinito su "allow".


4
Scrivibile? veramente? Non ne sono sicuro
php-dev

5

Spostare la clausola Directory fuori dall'host virtuale e inserirla prima di dichiarare l'host virtuale.

Mi ha fatto impazzire anche per molto tempo. Non so perché È una cosa Debian.


Woah, è così strano.
kako-nawao


0

Se hai fatto tutto bene, dai il permesso alla home directory come:

sudo chmod o+x $HOME

poi

sudo systemctl restart apache2

0

Il problema era che l'autorizzazione di accesso ai file era sbagliata.

Ho cambiato i permessi della directory e ha funzionato.


0

Ho avuto questo problema anche su Arch Linux ... mi costa un po 'di tempo ma sono felice ora che ho trovato il mio errore:

La mia directory con i .htmlfile nel mio account.
Ho impostato tutto r+xma ho ancora ricevuto l' 403errore.
Poi sono tornato completamente indietro e ho provato a impostare la mia home directory per l' esecuzione che ha risolto il mio problema.


-1

Ho appena passato diverse ore su questo stupido problema

Innanzitutto, modifica i permessi usando questo nel terminale

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

Non so quale sia la differenza tra 664 e 775 Ho fatto entrambi 775 in questo modo Anche htdocs ha bisogno del percorso della directory, ad esempio per me era

/usr/local/apache2/htdocs 

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

Questa è anche l'altra cosa stupida

assicurati che il tuo link src dell'immagine sia il tuo nome di dominio, ad esempio

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

Assicurati di averlo

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

Si modificano quelli che utilizzano pico nel terminale

Ho anche creato una directory per le immagini in modo specifico in modo che quando digiti nella barra degli indirizzi del browser domainname.com/images, otterrai un elenco di foto che possono essere scaricate e devono essere scaricate con successo per indicare i file di immagine che funzionano correttamente

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

E quelle sono le soluzioni che ho provato, ora ho immagini funzionanti ... yay !!!

Al prossimo problema (i)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.