2012-04-27 18 views
146

jestem corazApache: klient zaprzeczył konfiguracji serwera

[Tue 24 kwietnia 2012 12:12:55] [Błąd] [127.0.0.1] Klient klient zaprzeczył konfiguracji serwera:/labs/Projekty/Nebula/bin/

Moja struktura katalogów wygląda (używam Symfony 2, powinna być zbliżona do struktury innych ram internetowych)

enter image description here

Mam vhosts setup jak:

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

Zastanawiam się, w czym problem i jak to naprawić?

+1

@JiewMeng: Prawdopodobnie powinieneś zaakceptować odpowiedź Phila. Wydaje się, że jest to problem z dzisiejszą instalacją Apache (Apache 2.4). Dzięki. – dotancohen

Odpowiedz

11

OK Używam złą składnię, to należy używać

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

Dla Apache> 2.4 samo to nie może działać dla mnie. Ale zadziałało w połączeniu z 'Wymagaj wszystkich przyznanych', jak zasugerował @ Phil-L –

1

Czy możesz spróbować zmienić "Allow from 127.0.0 192.168.1 :: 1 localhost" na "Allow all all". Jeśli to rozwiązuje problem, trzeba mieć mniej ograniczać którego zawartość może być wymagane od

1

Oto mój Symfony 1.4 wirtualny plik hosta na debian, który działa dobrze.

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

Jeśli nie możesz ograniczyć dostępu do określonego zakresu adresów IP, np. localhost to wykorzystać:

Allow from 127.0.0.0/8 

mod_authz_host jest odpowiedzialny za filtrowanie zakresów IP. Możesz tam znaleźć szczegółowe informacje.

Ale może problem może być związany z błędną konfiguracją w twoim "apache2.conf".

Na jakim systemie operacyjnym działa apache?

389

Apache 2.4.3 (lub może nieco wcześniej) dodano nową funkcję zabezpieczeń, która często powoduje ten błąd. Pojawi się również komunikat dziennika o postaci "Odmowa klienta przez konfigurację serwera". Ta funkcja wymaga autoryzowanego użytkownika do uzyskania dostępu do katalogu. Jest on włączony przez DEFAULT w pliku httpd.conf, który jest dostarczany z Apache. Możesz włączyć funkcję tej funkcji za pomocą dyrektywy

W zasadzie oznacza to odmowę dostępu do wszystkich użytkowników. Aby rozwiązać ten problem, należy usunąć odmówiono dyrektywy (lub znacznie lepiej) dodać następującą dyrektywę do katalogów, które chcesz przyznać dostęp do:

Require all granted 

jak w

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

Zobacz także: http://httpd.apache.org/docs/current/upgrading.html#access –

+8

może również potrzebować dodać' Satisfy Dowolne "po" Wymagaj wszystkich udzielonych " – MarkHu

+0

@MarkHu - czy możesz wyjaśnić możliwą konieczność" Zaspokojenia jakiegokolwiek "w tym kontekście? Pytam, ponieważ ściągałem tu włosy, i dodałem, że wszystko działa dla mnie. Dziwne jest to, że aplikacja pracowała z istniejącym wpisem vhost, aż do ostatniej aktualizacji Apache do '2.4.9'. Jeszcze dziwniejsze, że działa dobrze na innym serwerze z tą samą wersją app/vhost i Apache/PHP. Jednak różne serwery - odpowiednio AWS Linux i Ubuntu 14.10. Dziwne ... Chyba muszę porównać pliki "httpd.conf" każdego serwera, aby sprawdzić, czy istnieje różnica konfiguracyjna ... –

1

jeśli przynoszą

Allow from All 

w httpd.conf następnie upewnij się nam mieć

indeks.php

jak w poniższej linii w httpd.conf

DirectoryIndex index.html index.php 
0

w moim przypadku kluczem było:

AllowOverride All 

w definicji vhost. Mam nadzieję, że to pomoże komuś.

4

W Apache 2.4 stara składnia autoryzacji dostępu została uznana za przestarzałą i zastąpiona przez nowy system używający Wymaganie.

Co chcesz potem jest coś jak następuje:

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

Pozwoli to połączenia, które pochodzą albo z lokalnego hosta lub z adresów IP, które zaczynają się od „192.168.1”.

Jest też nowy moduł dostępny sprawia, że ​​Apache 2.4 rozpoznać starej składni, jeśli nie chcesz zaktualizować konfigurację razu:

sudo a2enmod access_compat 
-3

Ten kod pracował dla mnie ..

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

Nadzieja to pomaga innym

+1

Nie należy tego zachęcać do dodawania do konfiguracji apache. –

+0

Umożliwia to serwerowi Apache dostęp do wszystkich plików na komputerze. Bardzo zły z punktu widzenia bezpieczeństwa. – Deleet

1

miałem ten problem przy użyciu Vesta CP i dla mnie, sztuką było usunąć .htaccess i próbować uzyskać dostęp do dowolnego pliku ponownie.

To spowodowało regenerację pliku .htaccess, a następnie mogłem uzyskać dostęp do moich plików.

Powiązane problemy