Apache: klien ditolak oleh konfigurasi server

150

Saya mendapatkan

[Sel 24 Apr 12:12:55 2012] [kesalahan] [klien 127.0.0.1] klien ditolak oleh konfigurasi server: / labs / Projects / Nebula / bin /

Struktur direktori saya terlihat seperti (Saya menggunakan Symfony 2, seharusnya struktur serupa untuk kerangka kerja web lainnya)

masukkan deskripsi gambar di sini

Saya memiliki pengaturan vhosts seperti:

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

Saya bertanya-tanya apa masalahnya dan bagaimana cara memperbaikinya?

Jiew Meng
sumber
1
@JiewMeng: Anda mungkin harus menerima jawaban Phil. Tampaknya menjadi masalah dengan sebagian besar pemasangan Apache hari ini (Apache 2.4). Terima kasih.
dotancohen

Jawaban:

396

Apache 2.4.3 (atau mungkin sedikit lebih awal) menambahkan fitur keamanan baru yang sering mengakibatkan kesalahan ini. Anda juga akan melihat pesan log dari formulir "klien ditolak oleh konfigurasi server". Fitur ini memerlukan identitas pengguna yang sah untuk mengakses direktori. Diaktifkan oleh DEFAULT di httpd.conf yang dikirimkan bersama Apache. Anda dapat melihat pengaktifan fitur dengan arahan

Require all denied

Ini pada dasarnya mengatakan untuk menolak akses ke semua pengguna. Untuk memperbaiki masalah ini, hapus arahan yang ditolak (atau jauh lebih baik) tambahkan arahan berikut ke direktori yang ingin Anda beri akses:

Require all granted

seperti dalam

<Directory "your directory here">
   Order allow,deny
   Allow from all
   # New directive needed in Apache 2.4.3: 
   Require all granted
</Directory>
Phil L
sumber
9
mungkin juga perlu menambahkan Satisfy AnysetelahRequire all granted
MarkHu
@MarkHu - dapatkah Anda menjelaskan kemungkinan yang diperlukan Satisfy anydalam konteks ini? Saya bertanya karena saya mencabut rambut saya di sini, dan menambahkan ini membuat semuanya bekerja untuk saya. Yang aneh adalah aplikasi ini bekerja dengan entri vhost yang ada hingga pembaruan Apache baru-baru ini 2.4.9. Lebih aneh lagi, apakah itu berfungsi dengan baik di server lain dengan versi app / vhost dan Apache / PHP yang sama. Server yang berbeda - AWS Linux dan Ubuntu 14.10 masing-masing. Aneh ... Saya kira saya perlu membandingkan httpd.conffile masing-masing server untuk melihat apakah ada perbedaan konfigurasi di sana ...
Darragh Enright
Periksa juga htaccessdi jalur yang Anda coba akses
Ujjwal Singh
Lingkungan saya tidak berfungsi sampai saya memutuskan untuk menggunakan solusi @MarkHu Satisfy Any. Terima kasih!!!
Neonigma
bahkan setelah mengubah untuk meminta semua diberikan itu menunjukkan kesalahan yang sama Akses Ditolak.
Deepak
10

OK saya menggunakan sintaks yang salah, saya harus menggunakan

Allow from 127.0.0.1
Allow from ::1
...
Jiew Meng
sumber
1
Untuk apache> 2,4 ini saja tidak bisa bekerja untuk saya. Tapi itu berhasil ketika dikombinasikan dengan Require all granted, seperti yang disarankan oleh @ Phil-L
Mugoma J. Okomba
5

Di Apache 2.4 sintaksis otorisasi akses lama telah ditinggalkan dan digantikan oleh sistem baru menggunakan Require .

Yang Anda inginkan adalah sesuatu seperti yang berikut:

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

Ini akan memungkinkan koneksi yang berasal baik dari host lokal atau dari alamat ip yang dimulai dengan "192.168.1".

Ada juga modul baru yang tersedia yang membuat Apache 2.4 mengenali sintaks lama jika Anda tidak ingin segera memperbarui konfigurasi Anda:

sudo a2enmod access_compat
Kicauan
sumber
1

Bisakah Anda mencoba mengubah "Izinkan dari 127.0.0 192.168.1 :: 1 localhost" menjadi "Izinkan dari semua". Jika itu memperbaiki masalah Anda, Anda harus mengurangi batasan tentang dari mana konten dapat diminta

MauricioOtta
sumber
1

Inilah file host virtual symfony 1.4 saya di debian, yang berfungsi dengan baik.

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

Jika Anda tidak ingin membatasi akses ke rentang ip tertentu, mis. Localhost gunakan ini:

Allow from 127.0.0.0/8

The mod_authz_host bertanggung jawab untuk menyaring rentang ip. Anda dapat mencari hal-hal detail di sana.

Tapi mungkin masalahnya bisa terkait dengan beberapa jenis kesalahan konfigurasi di "apache2.conf" Anda.

Pada OS apa apache berjalan?

cb0
sumber
1

jika Anda memiliki

Allow from All

di httpd.conf lalu pastikan kita memilikinya

index.php

seperti pada baris di bawah ini di httpd.conf

DirectoryIndex index.html index.php
Satya
sumber
1

Saya mengalami masalah ini menggunakan Vesta CP dan bagi saya, triknya adalah menghapus .htaccess dan mencoba mengakses file apa pun lagi.

Itu menghasilkan regenerasi file .htaccess dan kemudian saya dapat mengakses file saya.

Guille Acosta
sumber
0

Dalam kasus saya kuncinya adalah:

AllowOverride All

dalam definisi vhost. Saya harap ini membantu seseorang.

Kunegunda Gburia-Furia
sumber
-3

Kode ini bekerja untuk saya ..

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

Semoga ini bisa membantu orang lain

santosh
sumber
1
Ini sama sekali tidak dianjurkan untuk ditambahkan ke dalam konfigurasi apache.
Ricky Mutschlechner
Ini memungkinkan apache untuk mengakses setiap file di komputer. Sangat buruk untuk keamanan.
Menghapus