ข้อผิดพลาด 403 หลังจากอัปเกรดเป็น apache2.4


34

หลังจากอัปเกรดจากเซิร์ฟเวอร์ Ubuntu 13.04 หน้า www จะไม่แสดงขึ้นมาเอง

ข้อผิดพลาด 403 ถูกห้ามคุณไม่ได้รับอนุญาตให้เข้าถึง / บนเซิร์ฟเวอร์นี้

ฉันเปลี่ยนการควบคุมการเข้าถึงบันทึกจาก apache2.2 เป็น apache2.4 แต่นั่นไม่ได้ผล ฉันจะทำอะไรได้อีก

คำตอบ:


59

สิ่งที่เกิดขึ้นคือไวยากรณ์ของไฟล์การกำหนดค่าใน apache2.4 มีการเปลี่ยนแปลง

ที่มา: สิ่งนี้เกิดขึ้นกับฉันเช่นกันหลังจากฉันอัพเกรดเป็น 13.10

ไฟล์ conf.d

ไฟล์ทั้งหมดที่อยู่ในควรจะย้ายไป/etc/apache2/conf.d/etc/apache2/conf-available

ตอนนี้พวกเขาทำงานในลักษณะเดียวกันsitesและmodsทำงาน เพียงแค่ใส่ conf ไฟล์ของคุณในโฟลเดอร์และเปิดใช้งานอย่างใดอย่างหนึ่งที่คุณต้องการด้วยconf-availablea2enconf <config-file-name>

ตัวอย่าง:

ฉันมีไฟล์conf.d/httpd.confที่มีคำสั่ง ServerName
เพื่อให้งานฉันต้องย้ายไปยังconf-availableไดเรกทอรีและเปิดใช้งานด้วยตนเอง

sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd

ไฟล์เว็บไซต์

ก่อนหน้านี้ไฟล์ใน/etc/apache2/sites-availableไม่มีส่วนขยาย /etc/apache2/sites-available/defaultเช่น ตอนนี้ต้องมีการ.confขยาย

ตัวอย่าง:

หากคุณมี/etc/apache2/sites-available/some-siteใน 13.04 sudo a2ensite some-siteคุณก็สามารถเปิดใช้งานได้โดยใช้ ตอนนี้มันจะทำให้คุณเข้าใจผิดว่า

ข้อผิดพลาด: ไม่มีไซต์บางไซต์!

เพื่อแก้ไขปัญหานี้ผนวก.confกับทุก config sites-availableไฟล์ของคุณได้ใน คุณสามารถทำเช่นเดียวกันในsites-enabledหรือคุณสามารถลบไฟล์ทั้งหมดและเปิดใช้งานแต่ละไฟล์ด้วยตนเอง
ฉันแนะนำให้ทำด้วยตนเองเนื่องจากคุณอาจต้องแก้ไข VHost แต่ละอัน (ขั้นตอนถัดไป)

sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;

หากคุณตัดสินใจที่จะทำด้วยตนเอง:

sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name

คำสั่งโฮสต์เสมือน:

อนุญาต / ปฏิเสธ vs ต้องการ

หากคุณมีสิ่งต่อไปนี้:

<Directory /path/to/your/site/>
    order allow,deny
    allow from all
</Directory>

มันควรจะเป็น:

<Directory /path/to/your/site/>
    Require all granted
</Directory>

สำหรับข้อมูลเพิ่มเติมตรวจสอบความคิดเห็นโดยDaveRandomเกี่ยวกับคำตอบของ Stack Overflow

ใส่เพียงแค่ถ้าคุณอัปเกรดเป็น apache2.4 และเก็บเก่าhttpd.confของ apache2.2 อนุญาตให้คำสั่งควรทำงานได้ดี ถ้าคุณปรับรุ่นของคุณhttpd.conf(ซึ่งผมขอแนะนำ) คุณจะได้รับ 403 ข้อผิดพลาดจนกว่าคุณจะเปลี่ยนOrder/ Allow/ สั่งเทียบเท่าของพวกเขาDenyRequire

ตัวเลือกไดเรกทอรี

หากคุณมีตัวเลือกไดเรกทอรีทราบว่าพวกเขาทั้งหมดจะต้องมีการใช้ได้ด้วย+หรือ-หรือไม่มีของพวกเขาทั้งหมด ไม่อนุญาตให้ใช้ทั้งส่วนผสม:

ตัวอย่าง:

สิ่งนี้ได้รับอนุญาต:

<Directory /path/to/your/site/>
    Options +Indexes +FollowSymLinks -MultiViews
</Directory>

ดังนั้นนี่คือ (โปรดทราบว่าตัวอย่างเหล่านี้ไม่ได้ทำในสิ่งเดียวกันทั้งคู่ก่อนหน้าปิดการใช้งานMultiViewsตัวเลือกที่หนึ่งต่อไปไม่ได้):

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks MultiViews
</Directory>

สิ่งนี้ไม่ได้รับอนุญาตอีกต่อไป:

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks -MultiViews
</Directory>

ตัวเลือกการกำหนดค่าล่าสุดจะส่งข้อผิดพลาดทางไวยากรณ์ว่า

ตัวเลือกทั้งหมดต้องเริ่มต้นด้วย + หรือ - หรือไม่มีตัวเลือกใด ๆ ก็ได้

รีสตาร์ท apache

เมื่อทุกอย่างเสร็จสิ้นคุณต้องรีสตาร์ทเซิร์ฟเวอร์ apache เพื่อให้การเปลี่ยนแปลงมีผล:

 sudo apache2ctl restart

คุณสามารถค้นหาคำแนะนำการอัพเกรดอย่างละเอียดจาก 2.2 เป็น 2.4 ได้ในเอกสารราชการ


1
ในระบบของฉันไม่มีhttpd.confไฟล์หรือconf.dไดเรกทอรี แต่มีapache2.confไฟล์อยู่ ฉันพยายามย้ายไปยังconf-availableไดเรกทอรีและได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันรีสตาร์ท apache2: apache2: ไม่สามารถเปิดไฟล์กำหนดค่า /etc/apache2/apache2.conf: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว - อาจเป็นสาเหตุอะไร?
Amal Murali

@Amalmurali httpd.confเป็นเพียงตัวอย่าง เป็นไปได้ว่าคุณจะไม่มีไฟล์ปรับแต่งใด ๆ ในconf.dไดเรกทอรีในกรณีนั้นเพียงข้ามขั้นตอนนั้น ในฐานะที่เป็นapache2.confก็ไม่ควรที่จะเดินเข้าไปในconf-availableไดเรกทอรี เป็นไฟล์การกำหนดค่าหลักของ apache และพา ธ ควรเป็น /etc/apache2/apache2.conf และต้องไม่เปลี่ยน
ด่าน

1
ว้าว. นี่เป็นภาพรวมที่ชัดเจนเพียงอย่างเดียวที่พบได้ทุกที่ ขอบคุณ
Russ Bateman

ไม่มีconfig.dหรือsites availableโฟลเดอร์ ดูไฟล์กำหนดค่าทั้งหมดได้ที่นี่: imgur.com/WczXp3v
diEcho

1
@EdwardBlack อาจมีสาเหตุอื่นหากคุณยังคงใช้โฮสต์เสมือนเริ่มต้นตามที่อธิบายในคำตอบของคำถามต่อไปนี้: Apache virtualhost ไม่ทำงานอีกต่อไปหลังจากอัปเดตเป็น 13.10
Dan

0

ฉันคิดว่าเว็บไซต์กำลังทำงานบนเซิร์ฟเวอร์ Ubuntu ของคุณ

ตรวจสอบ httpd.conf ของคุณเพื่อให้แน่ใจว่าการตั้งค่า DocumentRoot ของคุณชี้ไปยังตำแหน่งที่ถูกต้อง

ตรวจสอบสิทธิ์การใช้ไฟล์ในโฟลเดอร์ที่อ้างอิงโดย DocumentRoot สามารถอ่านได้โดยผู้ใช้ที่เว็บเซิร์ฟเวอร์ทำงานเป็น

ตรวจสอบว่าคุณมี index.html / index.htm ที่เหมาะสมและเว็บเซิร์ฟเวอร์ไม่พยายามทำรายชื่อไดเรกทอรี


0

ฉันพบปัญหาที่คล้ายกัน

ฉันไม่สามารถเรียกใช้ apache 2.4 เว้นแต่ว่าฉันใช้ 'อนุญาตจากทั้งหมด' นี่เป็นสิ่งที่น่ารำคาญเพราะฉันต้องการหยุดพักจากเวอร์ชัน <2.4 หลังจากการลองผิดลองถูกและการค้นหาจำนวนมากฉันพบการอ้างอิงถึง access_compat และตระหนักว่านี่เป็นเพียงความเข้ากันได้เท่านั้น แม้ว่าเอกสาร apache จะบอกว่าสามารถใช้ทั้งคู่ได้ แต่ก็แนะนำว่าไม่ควรใช้

ฉันลบโมดูลนี้ออกจากไฟล์โหลด / etc / sysconfig / apache2 สิ่งนี้จะแก้ไขปัญหาของฉันทันที

ขอแสดงความนับถือเลียม


-1

ฉันกำลังให้บริการไฟล์จากไดเรกทอรีที่ไม่ได้มาตรฐานดังนั้นเพื่อทำการอัพเกรดฉันต้องแก้ไข /etc/apache2/apache2.conf และเพิ่ม: ดัชนีตัวเลือกดัชนี FollowSymLinks AllowOverride ไม่มีทั้งหมดที่ได้รับอนุญาต

หลังจากนี้และการเปลี่ยนแปลงที่แนะนำข้างต้นข้อผิดพลาด 403 ก็หายไป

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