Apache VirtualHost 403 Terlarang

123

Saya baru-baru ini mencoba menyiapkan server uji dengan Apache. Situs harus dijalankan di bawah domain www.mytest.com. Saya selalu mendapatkan 403 Forbiddenkesalahan. Saya menggunakan edisi server Ubuntu 10.10. Root doc berada di bawah dir /var/www. Berikut ini adalah pengaturan saya:

Isi dari / var / www

ls -l /var/www/

total 12
drwxr-xr-x 2 root root 4096 2011-08-04 11:26 mytest.com
-rwxr-xr-x 1 root root 177 2011-07-25 16:10 index.html

Konten file host di server (dengan IP 192.168.2.5)

cat /etc/hosts

127.0.0.1 localhost 
127.0.1.1 americano
192.168.2.5 americano.mytest.com www.mytest.com

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Konfigurasi situs

<VirtualHost *>
ServerAdmin [email protected]
ServerName www.mytest.com
ServerAlias mytest.com

DocumentRoot "/var/www/mytest.com"

ErrorLog /var/log/apache2/mytest-error_log
CustomLog /var/log/apache2/mytest-access_log combined

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/var/www/mytest.com">
Options -Indexes FollowSymLinks
AllowOverride None

Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Saya tidak memiliki .htaccessfile di root doc saya. Izin diatur dengan benar (dapat dibaca oleh www-data).

Jika saya mengetik alamat IP dari desktop saya, situs tersebut muncul dengan benar. Saya mengubah file host di desktop saya agar mengarah www.mytest.comke IP server. Saat saya menggunakannya, saya mengerti 403. Karena banyak fungsi situs ini yang peka terhadap nama situs, saya harus dapat mengakses situs dengan nama domain.

Hal funky lainnya adalah, meskipun semua file log dibuat dengan benar, mereka tidak memiliki informasi tentang kesalahan ini.

Aku terjebak. Ada yang bisa membantu?

Yuchen Wang
sumber
dapatkah Anda menambahkan konten dari: sudo sh -c ". /etc/apache2/envvars; apache2 -S"(daftar Virtualhosts) dan:sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""
regilero
Perintah pertama kembali sebagai berikut: VirtualHost configuration: 192.168.2.5:* www.mytest.com (/etc/apache2/sites-enabled/mytest.com:1) Syntax OK Perintah kedua kembali: /etc/apache2/ports.conf:Listen 80 /etc/apache2/ports.conf: Listen 443 /etc/apache2/ports.conf: Listen 443 /etc/apache2/conf.d/virtual.conf:NameVirtualHost *
Yuchen Wang
1
coba di serverfault.com
regilero

Jawaban:

296

Apache 2.4.3 (atau mungkin sedikit lebih awal) menambahkan fitur keamanan baru yang sering menyebabkan kesalahan ini. Anda juga akan melihat pesan log dalam bentuk "klien ditolak oleh konfigurasi server". Fitur tersebut membutuhkan identitas pengguna untuk mengakses direktori. Ini diaktifkan oleh DEFAULT di httpd.conf yang disertakan dengan Apache. Anda dapat melihat pengaktifan fitur dengan direktif

Require all denied

Ini pada dasarnya mengatakan untuk menolak akses ke semua pengguna. Untuk memperbaiki masalah ini, hapus direktif yang ditolak (atau jauh lebih baik) tambahkan direktif 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
3
Saya ingin mencatat bahwa jika Anda mengalami masalah ini menggunakan host virtual, Anda perlu menambahkan "Wajibkan semua diberikan" ke setiap pengaturan host virtual di dalam file apache / conf / extra / httpd-vhosts.conf.
Soundfx4
1
Saya telah menambahkan petunjuk ini ke /etc/apache2/apache2.confdan itu membantu, terima kasih!
DmitMedv
@ Soundfx4, tidak ada folder apache/conf/extradi dalamnya/etc/apache2
Hitam
Saya telah menambahkan /var/dev/website.com dan mendapatkan kesalahan 403. Menambahkan direktif yang disarankan ke /etc/apache2/apache2.conf (ubuntu) berhasil. Terima kasih teman-teman!
LoveFineArt
Terima kasih Pak. Apache semakin sulit untuk bekerja hari ini ...
OoDeLally
15

Untuk apache Ubuntu 2.4.7, saya akhirnya menemukan Anda perlu memasukkan host virtual Anda ke daftar putih di apache2.conf

# access here, or in any related virtual host.
<Directory /home/gav/public_html/>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
GAV
sumber
8

Ini mungkin masalah izin.

setiap jalur induk tunggal ke root dokumen virtual harus Dapat Dibaca, Dapat Ditulis, dan Dapat Dieksekusi oleh pengguna httpd server web

menurut halaman ini tentang kesalahan Apache 403.

Karena Anda menggunakan Allow from all, pesanan Anda seharusnya tidak menjadi masalah, tetapi Anda dapat mencoba mengalihkannya ke Deny,Allowuntuk menyetel perilaku default ke "mengizinkan".

Muncul
sumber
4
Dapat ditulis? Betulkah? Saya tidak yakin
php-dev
5

Pindahkan klausa Direktori keluar dari virtualhost, dan letakkan sebelum mendeklarasikan virtualhost.

Membuatku gila untuk waktu yang lama juga. Tidak tahu kenapa. Ini tentang Debian.

samtresler
sumber
Woah, itu sangat aneh.
kako-nawao
0

Jika Anda melakukan semuanya dengan benar, berikan izin direktori home seperti:

sudo chmod o+x $HOME

kemudian

sudo systemctl restart apache2
cagcak
sumber
0

Masalahnya adalah izin akses file salah.

Saya mengubah izin direktori dan berhasil.

Sebastian Viereck
sumber
0

Saya mengalami masalah ini di Arch Linux juga ... ini menghabiskan beberapa waktu tetapi saya senang sekarang karena saya menemukan kesalahan saya:

Direktori saya dengan .htmlfile yang ada di akun saya.
Saya mengatur semuanya r+xtetapi saya masih mendapatkan 403kesalahan.
Kemudian saya kembali sepenuhnya dan mencoba mengatur direktori home saya untuk dieksekusi yang memecahkan masalah saya.

TornaxO7
sumber
-1

Saya hanya menghabiskan beberapa jam untuk masalah bodoh ini

Pertama, ubah izin menggunakan ini di terminal

find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +

Saya tidak tahu apa perbedaan antara 664 dan 775 Saya melakukan keduanya 775 seperti ini Juga htdocs membutuhkan jalur direktori misalnya bagi saya itu

/usr/local/apache2/htdocs 

find htdocs -type f -exec chmod 775 {} + -o -type d -exec chmod 775 {} +

Ini juga hal bodoh lainnya

pastikan bahwa link src gambar Anda adalah nama domain Anda, misalnya

src="http://www.fakedomain.com/images/photo.png"

Pastikan untuk memilikinya

EnableSendfile off in httpd.conf file
EnableMMAP off in httpd.conf file

Anda mengeditnya menggunakan terminal pico in

Saya juga membuat direktori untuk gambar secara khusus sehingga ketika Anda mengetik di bilah alamat browser domainname.com/images, Anda akan mendapatkan daftar foto yang dapat diunduh dan perlu diunduh dengan sukses untuk menunjukkan file gambar yang berfungsi dengan baik

<Directory /usr/local/apache2/htdocs/images>
AddType images/png .png
</Directory>

Dan itu adalah solusi yang telah saya coba, sekarang saya memiliki gambar yang berfungsi ... yay !!!

Ke masalah berikutnya

Jacob David C. Cunningham
sumber