2012-04-27 10 views
146

sto ottenendoApache: il client negata dalla configurazione del server

[Mar 24 Apr 2012 12:12:55] [errore] [client 127.0.0.1] client negata dalla configurazione del server:/laboratori/Progetti/Nebula/bin/

La mia struttura delle directory assomiglia (sto usando Symfony 2, dovrebbe essere struttura simile per altri framework web)

enter image description here

Ho installato vhosts come:

<VirtualHost nebula:80> 
    DocumentRoot "/labs/Projects/Nebula/web/" 
    ServerName nebula 
    ErrorLog "/var/log/httpd/nebula-errors.log" 
</VirtualHost> 

<Directory "/labs/Projects/Nebula/"> 
    Options All 
    AllowOverride All 
    Order allow,deny 
    Allow from 127.0.0 192.168.1 ::1 localhost 
</Directory> 

Mi chiedo che cosa è il problema e come posso risolvere il problema?

+1

@JiewMeng: Probabilmente dovresti accettare la risposta di Phil. Sembra essere il problema con le installazioni di _most_ Apache oggi (Apache 2.4). Grazie. – dotancohen

risposta

11

OK Sto usando la sintassi sbagliata, dovrei usare

Allow from 127.0.0.1 
Allow from ::1 
... 
+0

Per apache> 2.4 questo da solo non potrebbe funzionare per me. Ma ha funzionato se combinato con "Richiedi tutto concesso", come suggerito da @ Phil-L –

1

Si può provare a cambiare "Consenti da 127.0.0 192.168.1 :: 1 localhost" a "Consenti da tutti". Se questo risolve il problema, è necessario essere meno restringere su cui i contenuti possono essere richieste

1

Ecco il mio symfony 1.4 file host virtuale su debian, che funziona bene.

<Directory /var/www/sf_project/web/> 
    Options All Indexes FollowSymLinks  
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    </Directory> 

Se non si desidera limitare l'accesso a un intervallo IP specifico, ad es. localhost usare questo:

Allow from 127.0.0.0/8 

Il mod_authz_host è responsabile per intervalli filtro IP. Puoi cercare cose dettagliate lì dentro.

Ma forse il problema potrebbe essere correlato ad un qualche tipo di errata configurazione nel tuo "apache2.conf".

Su quale sistema operativo è in esecuzione l'apache?

389

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

Require all denied 

Questo dice in sostanza di negare l'accesso a tutti gli utenti. Per risolvere questo problema, rimuovere la direttiva negata (o meglio) aggiungere la seguente direttiva per le directory che si desidera concedere l'accesso a:

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

Vedi anche: http://httpd.apache.org/docs/current/upgrading.html#access –

+8

potrebbe anche essere necessario aggiungere 'Soddisfa Any' after the 'Richiedi tutto scontato' – MarkHu

+0

@MarkHu - puoi spiegare l'eventuale necessità di" Soddisfare qualsiasi "in questo contesto? Te lo chiedo perché stavo tirando i miei capelli qui, e aggiungendo questo ha funzionato tutto per me. La cosa strana è che l'app stava lavorando con la voce vhost esistente fino a un recente aggiornamento di Apache a '2.4.9'. Weirder di nuovo, sta funzionando bene su un altro server con le stesse versioni di app/vhost e Apache/PHP. Server diversi però - AWS Linux e Ubuntu 14.10 rispettivamente. Strano ... Suppongo di dover confrontare i file 'httpd.conf' di ogni server per vedere se c'è una differenza di configurazione lì ... –

1

se si hanno il

Allow from All 

in httpd.conf quindi assicurarsi noi hanno

indice

.php

come nella riga sottostante in httpd.conf

DirectoryIndex index.html index.php 
0

Nel mio caso la chiave era:

AllowOverride All 

nella definizione vhost. Spero che aiuti qualcuno.

4

In Apache 2.4 la vecchia sintassi di autorizzazione all'accesso è stata deprecata e sostituita da un nuovo sistema utilizzando Richiedi.

Quello che vuoi, allora è qualcosa di simile al seguente:

<Directory "/labs/Projects/Nebula/"> 
    Options All 
    AllowOverride All 
    <RequireAny> 
    Require local 
    Require ip 192.168.1 
    </RequireAny> 
</Directory> 

Questo permetterà connessioni originate sia dall'host locale o da indirizzi IP che iniziano con "192.168.1".

C'è anche un nuovo modulo disponibile che rende Apache 2.4 riconosce la vecchia sintassi se non si desidera aggiornare la configurazione subito:

sudo a2enmod access_compat 
-3

Questo codice ha funzionato per me ..

<Location /> 
Allow from all 
Order Deny,Allow 
</Location> 

Spero che questo aiuta gli altri

+1

Questo non dovrebbe assolutamente essere incoraggiato ad aggiungere una configurazione di Apache. –

+0

Ciò consente a Apache di accedere a tutti i file sul computer. Molto male per la sicurezza. – Deleet

1

ho avuto questo problema utilizzando Vesta CP e per me, il trucco era rimuovere .htaccess e tenta di accedere a qualsiasi file di nuovo.

Che ha provocato la rigenerazione del file .htaccess e quindi ho potuto accedere ai miei file.

Problemi correlati