Apache: client negato dalla configurazione del server


150

Sto ottenendo

[Mar 24 apr 12:12:55 2012] [errore] [client 127.0.0.1] client negato dalla configurazione del server: / labs / Projects / Nebula / bin /

La mia struttura di directory sembra (sto usando Symfony 2, dovrebbe essere una struttura simile per altri framework web)

inserisci qui la descrizione dell'immagine

Ho configurato 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 qual è il problema e come posso risolverlo?


1
@JiewMeng: Probabilmente dovresti accettare la risposta di Phil. Sembra essere il problema con la maggior parte delle installazioni di Apache oggi (Apache 2.4). Grazie.
dotancohen,

Risposte:


396

Apache 2.4.3 (o forse leggermente prima) ha aggiunto una nuova funzionalità di sicurezza che spesso causa 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 httpd.conf fornito con Apache. Puoi vedere l'abilitazione della funzione con la direttiva

Require all denied

Questo in pratica 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>

9
potrebbe anche essere necessario aggiungere Satisfy AnydopoRequire all granted
MarkHu

@MarkHu - puoi spiegare la possibile necessità Satisfy anyin questo contesto? Lo sto chiedendo perché mi stavo strappando i capelli qui, e aggiungendo questo ha fatto funzionare tutto per me. La cosa strana è che l'app funzionava con la voce vhost esistente fino a un recente aggiornamento di Apache a 2.4.9. Ancora più strano, sta funzionando bene su un altro server con le stesse versioni app / vhost e Apache / PHP. Diversi server però - AWS Linux e Ubuntu 14.10 rispettivamente. Strano ... credo di dover confrontare i httpd.conffile di ciascun server per vedere se c'è una differenza di configurazione lì ...
Darragh Enright,

Controlla anche htaccessil percorso che stai tentando di accedere
Ujjwal Singh,

Il mio ambiente non funzionava fino a quando non ho deciso di utilizzare la soluzione @MarkHu Satisfy Any. Grazie!!!
Neonigma,

anche dopo aver modificato per richiedere tutto concesso, mostra lo stesso errore Accesso negato.
Deepak,

10

OK sto usando la sintassi sbagliata, dovrei usare

Allow from 127.0.0.1
Allow from ::1
...

1
Per apache> 2.4 questo da solo non poteva funzionare per me. Ma ha funzionato quando combinato con Require all granted, come suggerito da @ Phil-L
Mugoma J. Okomba il

5

In Apache 2.4 la vecchia sintassi delle autorizzazioni di accesso è stata deprecata e sostituita da un nuovo sistema usando Require .

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à le connessioni che hanno origine sia dall'host locale o da indirizzi IP che iniziano con "192.168.1".

È inoltre disponibile un nuovo modulo che consente ad Apache 2.4 di riconoscere la vecchia sintassi se non si desidera aggiornare subito la configurazione:

sudo a2enmod access_compat

1

Puoi provare a cambiare "Consenti da 127.0.0 192.168.1 :: 1 localhost" a "Consenti a tutti". Se ciò risolve il tuo problema, devi essere meno limitato su dove può essere richiesto il contenuto


1

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

  <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 esempio localhost, utilizzare questo:

Allow from 127.0.0.0/8

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

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

Su quale sistema operativo è in esecuzione l'apache?


1

se stai avendo il

Allow from All

in httpd.conf quindi assicurati di averlo

index.php

come nella riga sotto in httpd.conf

DirectoryIndex index.html index.php

1

Ho avuto questo problema usando Vesta CP e per me il trucco era rimuovere .htaccess e provare ad accedere di nuovo a qualsiasi file.

Ciò ha comportato la rigenerazione del file .htaccess e quindi sono stato in grado di accedere ai miei file.



-3

Questo codice ha funzionato per me ..

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

Spero che questo aiuti gli altri


1
Questo non dovrebbe assolutamente essere incoraggiato ad aggiungere una configurazione apache.
Ricky Mutschlechner,

Ciò consente ad apache di accedere a tutti i file sul computer. Molto male per la sicurezza.
CoderGuy123
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.