Apache VirtualHost 403 Forbidden


123

ฉันเพิ่งพยายามตั้งค่าเซิร์ฟเวอร์ทดสอบด้วย Apache www.mytest.comเว็บไซต์จะต้องทำงานภายใต้โดเมน ฉันมักจะได้รับ403 Forbiddenข้อผิดพลาด ฉันใช้ Ubuntu 10.10 server edition ราก doc อยู่ภายใต้ /var/wwwdir ต่อไปนี้คือการตั้งค่าของฉัน:

เนื้อหาของ / 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

เนื้อหาของไฟล์โฮสต์บนเซิร์ฟเวอร์ (พร้อม 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

การกำหนดค่าไซต์

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

ฉันไม่มี.htaccessไฟล์ในรูทเอกสารของฉัน กำหนดสิทธิ์อย่างถูกต้อง (อ่านได้โดย www-data)

หากฉันพิมพ์ที่อยู่ IP จากเดสก์ท็อปไซต์จะแสดงอย่างถูกต้อง ฉันเปลี่ยนไฟล์โฮสต์บนเดสก์ท็อปให้ชี้www.mytest.comไปที่ IP ของเซิร์ฟเวอร์ 403เมื่อฉันใช้มันฉันได้รับ เนื่องจากการทำงานหลายอย่างของไซต์นี้มีความอ่อนไหวต่อชื่อเว็บไซต์ฉันจึงต้องสามารถเข้าถึงไซต์ด้วยชื่อโดเมนได้

สิ่งที่น่าสนใจอีกอย่างคือแม้ว่าไฟล์บันทึกทั้งหมดจะถูกสร้างขึ้นอย่างถูกต้อง แต่ก็ไม่มีข้อมูลเกี่ยวกับข้อผิดพลาดนี้

ฉันติดอยู่ ใครสามารถช่วย?


คุณสามารถเพิ่มเนื้อหาของ: sudo sh -c ". /etc/apache2/envvars; apache2 -S"(รายการ Virtualhosts) และ:sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""
regilero

คำสั่งแรกส่งคืนดังนี้คำสั่ง VirtualHost configuration: 192.168.2.5:* www.mytest.com (/etc/apache2/sites-enabled/mytest.com:1) Syntax OK ที่สองส่งกลับ: /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
ลองใช้serverfault.com
regilero

คำตอบ:


296

Apache 2.4.3 (หรืออาจจะก่อนหน้านี้เล็กน้อย) ได้เพิ่มคุณสมบัติความปลอดภัยใหม่ที่มักจะทำให้เกิดข้อผิดพลาดนี้ นอกจากนี้คุณจะเห็นข้อความบันทึกของแบบฟอร์ม "ไคลเอนต์ถูกปฏิเสธโดยการกำหนดค่าเซิร์ฟเวอร์" คุณลักษณะนี้ต้องการข้อมูลประจำตัวผู้ใช้เพื่อเข้าถึงไดเร็กทอรี เปิดใช้งานโดย DEFAULT ใน httpd.conf ที่มาพร้อมกับ Apache คุณสามารถดูการเปิดใช้งานคุณสมบัติด้วยคำสั่ง

Require all denied

สิ่งนี้กล่าวโดยทั่วไปว่าจะปฏิเสธการเข้าถึงของผู้ใช้ทั้งหมด ในการแก้ไขปัญหานี้ให้ลบคำสั่งที่ถูกปฏิเสธ (หรือดีกว่ามาก) เพิ่มคำสั่งต่อไปนี้ในไดเร็กทอรีที่คุณต้องการให้สิทธิ์เข้าถึง:

Require all granted

เช่นเดียวกับใน

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

3
ฉันต้องการทราบว่าหากคุณประสบปัญหานี้ในการใช้โฮสต์เสมือนคุณจะต้องเพิ่ม "Require all given" ให้กับการตั้งค่าโฮสต์เสมือนแต่ละรายการภายในไฟล์ apache / conf / extra / httpd-vhosts.conf
Soundfx4

1
ฉันได้เพิ่มคำสั่งนี้/etc/apache2/apache2.confและมันช่วยได้ขอบคุณ!
DmitMedv

@ Soundfx4 ไม่มีโฟลเดอร์ที่เรียกapache/conf/extraอยู่ภายใน/etc/apache2
Black

ฉันได้เพิ่ม /var/dev/website.com และได้รับข้อผิดพลาด 403 การเพิ่มคำสั่งที่แนะนำไปยัง /etc/apache2/apache2.conf (ubuntu) เป็นการหลอกลวง ขอบคุณเพื่อน!
LoveFineArt

ขอบคุณครับ. อาปาเช่ทำงานยากขึ้นเรื่อย ๆ ในทุกวันนี้ ...
OoDeLally

15

สำหรับ apache Ubuntu 2.4.7 ในที่สุดฉันก็พบว่าคุณต้องไวท์ลิสต์โฮสต์เสมือนของคุณใน apache2.conf

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

8

นี่อาจเป็นปัญหาการอนุญาต

พาเรนต์พา ธ ทุกพา ธ ไปยังรูทเอกสารเสมือนต้องอ่านได้เขียนได้และรันได้โดยผู้ใช้เว็บเซิร์ฟเวอร์ httpd

ตามหน้านี้เกี่ยวกับข้อผิดพลาด Apache 403

เนื่องจากคุณกำลังใช้Allow from allคำสั่งซื้อของคุณก็ไม่สำคัญ แต่คุณอาจลองเปลี่ยนไปใช้Deny,Allowเพื่อตั้งค่าพฤติกรรมเริ่มต้นเป็น "อนุญาต"


4
สามารถเขียนได้? จริงๆ? ฉันไม่แน่ใจ
php-dev

5

ย้ายส่วนคำสั่ง Directory ออกจาก virtualhost และวางไว้ก่อนประกาศ virtualhost

ขับรถฉันถั่วมานานแล้วด้วย ไม่รู้ทำไม. มันเป็นสิ่งที่ Debian


ว้าวมันแปลกมาก
kako-nawao


0

หากคุณทำทุกอย่างถูกต้องเพียงแค่ให้สิทธิ์โฮมไดเร็กทอรีเช่น:

sudo chmod o+x $HOME

แล้วก็

sudo systemctl restart apache2

0

ปัญหาคือสิทธิ์การเข้าถึงไฟล์ไม่ถูกต้อง

ฉันเปลี่ยนสิทธิ์ของไดเร็กทอรีและใช้งานได้


0

ฉันมีปัญหานี้ใน Arch Linux เช่นกัน ... ฉันต้องเสียเวลาพอสมควร แต่ตอนนี้ฉันมีความสุขที่พบข้อผิดพลาด:

ไดเรกทอรีของฉันกับ.htmlไฟล์ที่อยู่ในบัญชีของฉัน
ฉันตั้งค่าทุกอย่างแล้วr+xแต่ยังพบ403ข้อผิดพลาด
กว่าที่ฉันจะกลับไปอย่างสมบูรณ์และพยายามตั้งค่าโฮมไดเร็กทอรีของฉันเพื่อดำเนินการซึ่งช่วยแก้ปัญหาของฉันได้


-1

ฉันใช้เวลาหลายชั่วโมงกับปัญหาโง่ ๆ นี้

ขั้นแรกให้เปลี่ยนสิทธิ์โดยใช้สิ่งนี้ในเทอร์มินัล

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

ฉันไม่รู้ว่าอะไรคือความแตกต่างระหว่าง 664 และ 775 ฉันทำทั้ง 775 แบบนี้เช่นกัน htdocs ต้องการเส้นทางไดเรกทอรีสำหรับฉันเช่นกัน

/usr/local/apache2/htdocs 

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

นี่คือสิ่งที่โง่เกินไป

ตรวจสอบให้แน่ใจว่าลิงก์รูปภาพ src ของคุณเป็นชื่อโดเมนของคุณเช่น

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

อย่าลืมมี

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

คุณแก้ไขโดยใช้ pico ในเทอร์มินัล

ฉันยังสร้างไดเร็กทอรีสำหรับรูปภาพโดยเฉพาะเพื่อที่เมื่อคุณพิมพ์ในแถบที่อยู่ของเบราว์เซอร์ domainname.com/images คุณจะได้รับรายการภาพถ่ายที่สามารถดาวน์โหลดได้และจำเป็นต้องดาวน์โหลดให้สำเร็จเพื่อระบุไฟล์ภาพที่ทำงานได้อย่างถูกต้อง

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

และนี่คือวิธีแก้ปัญหาที่ฉันได้ลองตอนนี้ฉันมีภาพที่ใช้งานได้ ... เย้ !!!

ไปยังปัญหาต่อไป (s)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.