Apache VirtualHost 403 Yasak


123

Yakın zamanda Apache ile bir test sunucusu kurmayı denedim. Site alan adı altında çalışmalıdır www.mytest.com. Her zaman bir 403 Forbiddenhata alırım . Ubuntu 10.10 sunucu sürümündeyim. Doc kökü dir altındadır /var/www. Ayarlarım aşağıdadır:

/ Var / www içeriği

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

Sunucudaki ana bilgisayar dosyasının içeriği (IP 192.168.2.5 ile)

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

Site yapılandırması

<VirtualHost *>
ServerAdmin admin@mytest.com
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>

.htaccessDoküman kökümde dosya yok . İzinler doğru şekilde ayarlandı (www verileri tarafından okunabilir).

IP adresini masaüstümden yazarsam, site doğru bir şekilde görünüyor. Masaüstümdeki hosts dosyasını www.mytest.comsunucunun IP'sini gösterecek şekilde değiştirdim. Kullandığım zaman anlıyorum 403. Bu sitenin birçok işlevi site adına duyarlı olduğundan, siteye alan adıyla erişebilmeliyim.

Bir başka ilginç şey de, tüm günlük dosyaları düzgün bir şekilde oluşturulsa bile, bu hatayla ilgili hiçbir bilgilerinin olmamasıdır.

Sıkıştım. Biri yardım edebilir mi?


sudo sh -c ". /etc/apache2/envvars; apache2 -S"şunların içeriğini ekleyebilir misiniz: (Sanal ev sahipleri listesi) ve:sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""
regilero

İlk komut aşağıdakini VirtualHost configuration: 192.168.2.5:* www.mytest.com (/etc/apache2/sites-enabled/mytest.com:1) Syntax OK döndürür: İkincisi şunu döndürür: /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

Yanıtlar:


296

Apache 2.4.3 (veya belki biraz daha erken), genellikle bu hatayla sonuçlanan yeni bir güvenlik özelliği ekledi. "İstemci sunucu yapılandırması tarafından reddedildi" şeklinde bir günlük mesajı da görürsünüz. Özellik, bir dizine erişmek için bir kullanıcı kimliği gerektiriyor. Apache ile birlikte gelen httpd.conf dosyasındaki VARSAYILAN tarafından etkinleştirilir. Yönerge ile özelliğin etkinleştirildiğini görebilirsiniz.

Require all denied

Bu, temelde tüm kullanıcılara erişimi reddetmek anlamına gelir. Bu sorunu çözmek için, ya reddedilen yönergeyi kaldırın (ya da 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>

3
Sanal konakları kullanarak bu problemi yaşıyorsanız, apache / conf / extra / httpd-vhosts.conf dosyasındaki her sanal konak ayarına "Tüm veriyi zorunlu kıl" seçeneğini eklemeniz gerekeceğini belirtmek isterim.
Soundfx4

1
Bu direktifi ekledim /etc/apache2/apache2.confve yardımcı oldu, teşekkürler!
DmitMedv

@ Soundfx4, apache/conf/extraiçinde çağrılan bir klasör yok/etc/apache2
Black

/Var/dev/website.com ekledim ve 403 hatası alıyordum. Önerilen yönergeyi /etc/apache2/apache2.conf'a (ubuntu) eklemek hile yaptı. Teşekkürler beyler!
LoveFineArt

Teşekkürler bayım. Apache'nin çalışması bugünlerde
gittikçe zorlaşıyor

15

Apache Ubuntu 2.4.7 için, nihayet sanal ana makinenizi apache2.conf'da beyaz listeye almanız gerektiğini buldum

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

8

Bu bir izin sorunu olabilir.

sanal belge köküne giden her bir ana yol web sunucusu httpd kullanıcısı tarafından Okunabilir, Yazılabilir ve Yürütülebilir olmalıdır

bu sayfaya göre Apache 403 hataları hakkında.

Kullandığınız için Allow from all, sıralamanız önemli olmamalıdır, ancak varsayılan davranışı "izin verme" Deny,Allowolarak ayarlamak için sırasını değiştirmeyi deneyebilirsiniz .


4
Yazılabilir? Gerçekten mi? Emin değilim
php-dev

5

Directory yan tümcesini sanal ana bilgisayarın dışına taşıyın ve sanal ana bilgisayarı bildirmeden önce yerleştirin.

Beni de uzun süre çıldırttı. Neden bilmiyorum. Debian olayı.


Woah, bu çok tuhaf.
kako-nawao


0

Her şeyi doğru yaptıysanız, ana dizine aşağıdaki gibi izin verin:

sudo chmod o+x $HOME

sonra

sudo systemctl restart apache2

0

Sorun, dosya erişim izninin yanlış olmasıydı.

Dizinin izinlerini değiştirdim ve işe yaradı.


0

Bu sorunu Arch Linux'ta da yaşadım ... bana biraz zamana mal oldu ama şimdi hatamı bulduğum için mutluyum:

.htmlHesabımdaki dosyaların bulunduğu dizin .
Her şeyi ayarladım r+xama hala 403hatayı alıyorum.
I Daha sırt tamamen gitti ve benim ayarlamak çalıştı ev dizini için yürütmek benim sorun çözüldü hangi.


-1

Bu aptal problem için birkaç saat harcadım

Öncelikle, bunu terminalde kullanarak izinleri değiştirin

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

664 ile 775 arasındaki farkın ne olduğunu bilmiyorum. Her ikisini de 775'i böyle yaptım Ayrıca htdocs benim için dizin yoluna ihtiyaç duyuyor

/usr/local/apache2/htdocs 

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

Bu da diğer aptalca şey

örneğin image src bağlantınızın alan adınız olduğundan emin olun

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

Sahip olduğunuzdan emin olun

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

Terminalde pico kullananları düzenlersiniz

Ayrıca özellikle resimler için bir dizin oluşturdum, böylece tarayıcı adres çubuğuna domainname.com/images yazdığınızda, indirilebilen ve düzgün çalıştığını göstermek için başarıyla indirilmesi gereken fotoğrafların bir listesini alacaksınız.

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

Ve denediğim çözümler bunlar, şimdi işleyen görüntülerim var ... yay !!!

Bir sonraki problem (ler) e

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.