Apache: istemci sunucu yapılandırması tarafından reddedildi


150

alıyorum

[Sal 24 Nis 12:12:55 2012] [hata] [istemci 127.0.0.1] istemci sunucu yapılandırması tarafından reddedildi: / labs / Projects / Nebula / bin /

Dizin yapım şöyle görünüyor (Symfony 2 kullanıyorum, diğer web çerçeveleri için benzer yapı olmalı)

resim açıklamasını buraya girin

Vhosts kurulum gibi var:

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

Sorunun ne olduğunu merak ediyorum ve nasıl düzeltebilirim?


1
@JiewMeng: Phil'in cevabını muhtemelen kabul etmelisin. Bugün Apache kurulumlarının çoğunda sorun var gibi görünüyor (Apache 2.4). Teşekkürler.
dotancohen

Yanıtlar:


396

Apache 2.4.3 (veya biraz daha erken), genellikle bu hatayla sonuçlanan yeni bir güvenlik özelliği ekledi. "İstemci sunucu yapılandırması tarafından reddedildi" biçiminde bir günlük iletisi de görürsünüz. Bu özellik, bir dizine erişmek için yetkili bir kullanıcı kimliği gerektiriyor. Apache ile birlikte gelen httpd.conf dosyasında DEFAULT tarafından açılır. Direktif ile özelliğin etkinleştirilmesini görebilirsiniz

Require all denied

Bu temelde tüm kullanıcılara erişimi reddettiğini söylüyor. Bu sorunu gidermek için, reddedilen yönergeyi kaldırın (veya çok daha iyisi), erişim vermek istediğiniz dizinlere aşağıdaki yönergeyi ekleyin:

Require all granted

de olduğu gibi

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

9
Ayrıca eklemeniz gerekebilir Satisfy AnysonraRequire all granted
MarkHu

@MarkHu - Satisfy anyBu bağlamda olası gerekliliğini açıklayabilir misiniz ? Soruyorum çünkü saçımı buraya çekiyordum ve bunu ekleyerek her şey benim için çalışıyor. Garip şey, uygulamanın son Apache yükseltmesine kadar mevcut vhost girişi ile çalışıyordu 2.4.9. Yine Weirder, aynı app / vhost ve Apache / PHP sürümlerine sahip başka bir sunucuda iyi çalışıyor. Farklı sunucular olsa - AWS Linux ve Ubuntu 14.10. Garip ... Sanırım httpd.conforada bir yapılandırma farkı olup olmadığını görmek için her sunucunun dosyalarını karşılaştırmak gerekir ...
Darragh Enright

Ayrıca htaccesserişmeye çalıştığınız yoldan da kontrol edin
Ujjwal Singh

@MarkHu Satisfy Any çözümünü kullanmaya karar verene kadar ortamım çalışmıyor. Teşekkürler!!!
Neonigma

tüm verilenleri gerektirecek şekilde değiştirdikten sonra bile Erişim Reddedildi aynı hatayı gösteriyor.
Deepak

10

Tamam yanlış sözdizimini kullanıyorum,

Allow from 127.0.0.1
Allow from ::1
...

1
Apache> 2.4 için bu sadece benim için işe yaramadı. Ancak Require all granted@ Phil-L
Mugoma J. Okomba

5

Apache 2.4'te eski erişim yetkilendirme sözdizimi kullanımdan kaldırılmış ve yerini Require kullanarak yeni bir sistem almıştır .

O zaman istediğiniz şey aşağıdaki gibidir:

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

Bu köken bağlantılara izin verir ya yerel ana bilgisayardan veya "192.168.1" ile başlayan ip adreslerinden.

Yapılandırmanızı hemen güncellemek istemiyorsanız Apache 2.4'ün eski sözdizimini tanımasını sağlayan yeni bir modül de bulunmaktadır:

sudo a2enmod access_compat

1

"İzin ver 127.0.0 192.168.1 :: 1 localhost" yerine "Herkese izin ver" olarak değiştirmeyi deneyebilir misiniz? Bu sorununuzu çözüyorsa, içeriğin nereden istenebileceği konusunda daha az kısıtlamanız gerekir


1

İşte debian üzerinde iyi çalışan benim symfony 1.4 sanal ana bilgisayar dosyası.

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

Belirli bir ip aralığına erişimi kısıtlamak istemiyorsanız, örneğin localhost bunu kullanın:

Allow from 127.0.0.0/8

Mod_authz_host ip aralıklarını filtreleme sorumludur. Orada ayrıntılı şeylere bakabilirsiniz.

Ancak, sorun "apache2.conf" dosyasındaki bir tür yanlış yapılandırma ile ilgili olabilir.

Apache hangi işletim sisteminde çalışıyor?


1

eğer sahipsen

Allow from All

httpd.conf'da bize sahip olduğunuzdan emin olun

index.php

httpd.conf dosyasındaki gibi

DirectoryIndex index.html index.php

1

Vesta CP kullanarak bu sorunu vardı ve benim için hile .htaccess kaldırmak ve tekrar herhangi bir dosyaya erişmek için deneyin.

Bu, .htaccess dosyasının yenilenmesine neden oldu ve daha sonra dosyalarıma erişebildim.



-3

Bu kod benim için çalıştı.

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

Umarım bu başkalarına yardımcı olur


1
Bu kesinlikle apache yapılandırmasına eklenmeye teşvik edilmemelidir.
Ricky Mutschlechner

Bu, apache'nin bilgisayardaki her dosyaya erişmesini sağlar. Güvenlik için çok kötü.
CoderGuy123
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.