Saya mendapatkan error ini ketika mencoba untuk mengakses localhost melalui browser.
AH01630: client denied by server configuration
Aku memeriksa lokasi folder permissions menggunakan:
sudo chmod 777 -R *
Berikut adalah file konfigurasi:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/user-name/www/myproject
<Directory />
Options FollowSymLinks
AllowOverride all
Allow from all
</Directory>
<Location />
Allow from all
Order Deny,Allow
</Location>
<Directory /home/user-name/www/myproject/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride all
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride all
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
Jika anda menggunakan Apache 2.4
Anda harus memeriksa memungkinkan dan menyangkal aturan
Check out http://httpd.apache.org/docs/2.4/upgrading.html#access
Di 2.2, kontrol akses berbasis client hostname, IP address, dan lain-lain karakteristik dari permintaan klien dilakukan dengan menggunakan perintah Order Allow, Deny, dan Memuaskan.
Di 2.4, seperti akses kontrol ini dilakukan dengan cara yang sama seperti yang lain otorisasi cek, menggunakan modul baru mod_authz_host.
Direksi baru adalah Membutuhkan:
2.2 konfigurasi:
Order allow,deny
Allow from all
2.4 konfigurasi:
Require all granted
Juga don't lupa untuk me-restart apache server setelah perubahan ini (# service httpd restart
)
Saya membuat perubahan yang sama yang ravisorg disarankan untuk OSX 10.10 Yosemite yang upgrade Apache ke versi 2.4. Berikut ini adalah perubahan yang ditambahkan ke http.conf.
<Directory />
AllowOverride none
Require all denied
</Directory>
<Directory /Volumes/Data/Data/USER/Sites/>
AllowOverride none
Require all granted
</Directory>
Ini membuatku benar-benar gila untuk satu setengah hari tapi saya menemukan solusi jika semua solusi lain telah mencoba gagal.
Ini adalah untuk macOS.
Pada saat itu saya langsung berhenti mendapatkan 403 kesalahan dan segala sesuatu mulai bekerja seperti yang diharapkan. Hal yang aneh adalah saya didn't bahkan harus me-restart apache itu hanya bekerja, saya kira itu restart sendiri ketika saya pergi ke localhost, jujur saya don't tahu, tapi saya kira masalahnya adalah Apache tidak benar-benar restart ketika menggunakan apachectl restart, atau menghentikan atau memulai. Semoga ini bisa membantu seseorang.
Aku punya diselesaikan diri saya setelah menghabiskan beberapa jam.
Saya telah menginstal Apache/2.4.7 (Ubuntu) melalui coookbook dalam gelandangan vm.
/etc/apache2/apache2.conf tidak memiliki <VirtualHost *:80>
elemen secara default.
Saya melakukan dua perubahan dilakukan untuk mendapatkannya
<VirtualHost *:80>
akhirnya aku hanya boot vm..
dalam kasus saya,
i'm menggunakan macOS Mojave (Apache/2.4.34). Ada masalah di virtual host pengaturan di /etc/apache2/extra/httpd-vhosts.conf. setelah menambahkan direktori yang diperlukan tag masalah saya hilang.
Membutuhkan semua diberikan
Berharap penuh virtual host penataan struktur akan menyelamatkan anda.
<VirtualHost *:80>
DocumentRoot "/Users/vagabond/Sites/MainProjectFolderName/public/"
ServerName project.loc
<Directory /Users/vagabond/Sites/MainProjectFolderName/public/>
Require all granted
</Directory>
ErrorLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-error_log"
CustomLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-access_log" common
</VirtualHost>
semua anda've untuk melakukan menggantikan MainProjectFolderName dengan tepat anda ProjectFolderName.
Jika anda ekor error log dan reload halaman, anda akan melihat beberapa informasi lebih lanjut tentang masalah yang tepat.
Ambil variabel lingkungan sehingga ${APACHE_LOG_DIR} akan benar-benar bekerja...
source /etc/apache2/envvars
Kemudian ekor dan menonton...
tail -f ${APACHE_LOG_DIR}/error.log
Apakah ada yang berpikir bahwa wamp server default tidak menyertakan httpd-vhosts.conf
file.
Pendekatan saya adalah untuk menghapus catatan di bawah ini
conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
di httpd.conf
file.
Itu adalah semua.
Ini membuatku gila. Akhirnya tahu apa masalahnya: Saya menggunakan jalur langsung untuk log kesalahan dan mereka salah.
Mengapa Apache memberikan yang samar-samar (dan salah) pesan error? Alih-alih menggunakan yang benar dan berguna pesan kesalahan seperti: Path untuk ErrorLog direktif "/salah/path/dan/filename.log" adalah tidak valid.
Lagi pula, untuk memperbaiki pastikan anda log kesalahan arahan terlihat seperti ini:
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Jika anda menggunakan Apache 2.4 di WampServer pada windows OS.
Anda perlu untuk membuka https-vhosts.conf file di notepad.
C:\wamp64\bin\apache\apache2.4.37\conf\extra\https-vhosts.conf
Jika anda tidak dapat menemukan file di atas. cek screenshot di bawah ini
<VirtualHost *:80>
ServerName localhost
DocumentRoot c:/wamp64/www
<Directory "c:/wamp64/www/">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
Dalam kode di atas Mengganti
Require local
dengan
Require all granted
Dan menyimpannya. Restart Apache service dan coba lagi.
Bagi saya, saya telah benar-benar diperbarui Memungkinkan dan Menyangkal aturan berdasarkan 2.4 standar.
Require all granted
Namun, ini masih menyebabkan saya untuk menerima yang sama AH01630 kesalahan. Saya menemukan thread lain dan disarankan menginstal ulang apache2. Entah bagaimana ini bekerja! Jika ada yang peduli untuk menjelaskan mengapa, itu akan sangat membantu.
Kredit untuk: https://stackoverflow.com/questions/52117745/ah01630-client-denied-by-server-configuration-but-require-all-granted-is-set-a
Jika anda memiliki https tuan rumah kemudian don't lupa untuk membuat Membutuhkan semua diberikan
perubahan untuk konfigurasi ssl juga.
Juga, kadang-kadang itu's berguna untuk memeriksa izin sebagai pengguna apache:
# ps -eFH | grep http # get the username used by httpd
...
apache 18837 2692 0 119996 9328 9 10:33 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
# su -s/bin/bash apache # switch to that user
bash-4.2$ whoami
apache
bash-4.2$ cd /home
bash-4.2$ ls
bash-4.2$ cd mysite.com
bash-4.2$ ls
bash-4.2$ cat file-which-does-not-work.txt
Untuk Wamp 3 (Apache 2.4), selain menempatkan server secara online seperti yang dijelaskan dalam jawaban yang lain, di Virtual Host file conf/extra/httpd-vhosts.conf
anda mungkin perlu mengganti
Require local
dengan
Require all granted
Hal ini berlaku jika dalam httpd.conf
anda telah
Include conf/extra/httpd-vhosts.conf
Jika tidak ada jawaban lainnya di halaman ini anda bekerja, di sini's apa yang saya berlari ke setelah jam menggelepar di sekitar.
Saya menggunakan user-konfigurasi tertentu, dengan Situs
dinyatakan sebagai UserDir
di /private/etc/apache2/extra/httpd-userdir.conf
. Namun, aku dilarang akses ke endpoint http://localhost/~jwork/
.
Aku bisa melihat di /var/log/apache2/error_log
bahwa akses ke /Pengguna/jwork/Situs/
sedang diblokir. Namun, saya telah diijinkan untuk mengakses DocumentRoot, via http://localhost/
. Hal ini menunjukkan bahwa saya tidak't memiliki hak untuk melihat ~jwork
pengguna. Tapi sejauh yang saya bisa katakan dengan ps aux | egrep '(apache|httpd)'
dan lsof-i :80
, Apache telah berjalan untuk jwork
user, jadi ada sesuatu yang jelas tidak menulis dengan konfigurasi pengguna.
Mengingat pengguna bernama jwork
, di sini saya config:
/private/etc/apache2/pengguna/jwork.conf
`` <Direktori "/Pengguna/jwork/Situs/"> Membutuhkan semua diberikan
``Ini config yang benar-benar valid. Namun, saya menemukan bahwa saya pengguna config itu't yang termasuk:
/private/etc/apache2/extra/httpd-userdir.conf
``
``
Perhatikan bahwa ini adalah default path ke userdir conf, tapi seperti yang anda'll lihat di bawah ini,'s dikonfigurasi dalam httpd.conf
. Memastikan bahwa baris berikut diaktifkan:
/private/etc/apache2/httpd.conf
`` Termasuk /private/etc/apache2/extra/httpd-userdir.conf
LoadModule userdir_module libexec/apache2/mod_userdir.jadi ``
Masalahnya mungkin bahwa direktif tidak di bawah < Direktori>
https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html#requiredirectives
Direktif dapat dirujuk dalam < Direktori>, < File>, atau < Lokasi> bagian serta .file htaccess untuk mengontrol akses ke bagian-bagian tertentu dari server. Akses dapat dikontrol berdasarkan pada klien nama host atau alamat IP.
Di samping hilang Order
dan Allow
arahan yang disebutkan dalam jawaban yang lain diketahui bahwa non-pencocokan ekspresi reguler dari DirectoryMatch
direktif juga dapat menyebabkan kesalahan ini.
Jika diminta path /home/user-foo1bar/www/myproject/
the folloing matcher won't pertandingan
<DirectoryMatch "/home/user-[a-z]+/www/myproject/">
...
</DirectoryMatch>
dengan demikian, bahkan akses yang valid konfigurasi yang mungkin menyebabkan kesalahan ini.
Bagi mereka yang terjebak di kesalahan ini seperti saya dan tidak ada yang membantu dari atas: memeriksa apakah masalah folder dari error.log benar-benar ada pada server anda. Tambang yang dihasilkan secara otomatis oleh Django di tempat yang salah (berantakan dengan statis akar, kemudian manage.py collectstatic
). Tidak tahu mengapa seseorang tidak dapat kesalahan nama dengan benar.