หลังจากอัปเกรดจากเซิร์ฟเวอร์ Ubuntu 13.04 หน้า www จะไม่แสดงขึ้นมาเอง
ข้อผิดพลาด 403 ถูกห้ามคุณไม่ได้รับอนุญาตให้เข้าถึง / บนเซิร์ฟเวอร์นี้
ฉันเปลี่ยนการควบคุมการเข้าถึงบันทึกจาก apache2.2 เป็น apache2.4 แต่นั่นไม่ได้ผล ฉันจะทำอะไรได้อีก
หลังจากอัปเกรดจากเซิร์ฟเวอร์ Ubuntu 13.04 หน้า www จะไม่แสดงขึ้นมาเอง
ข้อผิดพลาด 403 ถูกห้ามคุณไม่ได้รับอนุญาตให้เข้าถึง / บนเซิร์ฟเวอร์นี้
ฉันเปลี่ยนการควบคุมการเข้าถึงบันทึกจาก apache2.2 เป็น apache2.4 แต่นั่นไม่ได้ผล ฉันจะทำอะไรได้อีก
คำตอบ:
สิ่งที่เกิดขึ้นคือไวยากรณ์ของไฟล์การกำหนดค่าใน apache2.4 มีการเปลี่ยนแปลง
ที่มา: สิ่งนี้เกิดขึ้นกับฉันเช่นกันหลังจากฉันอัพเกรดเป็น 13.10
ไฟล์ทั้งหมดที่อยู่ในควรจะย้ายไป/etc/apache2/conf.d
/etc/apache2/conf-available
ตอนนี้พวกเขาทำงานในลักษณะเดียวกันsites
และmods
ทำงาน เพียงแค่ใส่ conf ไฟล์ของคุณในโฟลเดอร์และเปิดใช้งานอย่างใดอย่างหนึ่งที่คุณต้องการด้วยconf-available
a2enconf <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
หากคุณมีสิ่งต่อไปนี้:
<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
/ สั่งเทียบเท่าของพวกเขาDeny
Require
หากคุณมีตัวเลือกไดเรกทอรีทราบว่าพวกเขาทั้งหมดจะต้องมีการใช้ได้ด้วย+
หรือ-
หรือไม่มีของพวกเขาทั้งหมด ไม่อนุญาตให้ใช้ทั้งส่วนผสม:
สิ่งนี้ได้รับอนุญาต:
<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 เพื่อให้การเปลี่ยนแปลงมีผล:
sudo apache2ctl restart
คุณสามารถค้นหาคำแนะนำการอัพเกรดอย่างละเอียดจาก 2.2 เป็น 2.4 ได้ในเอกสารราชการ
httpd.conf
เป็นเพียงตัวอย่าง เป็นไปได้ว่าคุณจะไม่มีไฟล์ปรับแต่งใด ๆ ในconf.d
ไดเรกทอรีในกรณีนั้นเพียงข้ามขั้นตอนนั้น ในฐานะที่เป็นapache2.conf
ก็ไม่ควรที่จะเดินเข้าไปในconf-available
ไดเรกทอรี เป็นไฟล์การกำหนดค่าหลักของ apache และพา ธ ควรเป็น /etc/apache2/apache2.conf และต้องไม่เปลี่ยน
ฉันคิดว่าเว็บไซต์กำลังทำงานบนเซิร์ฟเวอร์ Ubuntu ของคุณ
ตรวจสอบ httpd.conf ของคุณเพื่อให้แน่ใจว่าการตั้งค่า DocumentRoot ของคุณชี้ไปยังตำแหน่งที่ถูกต้อง
ตรวจสอบสิทธิ์การใช้ไฟล์ในโฟลเดอร์ที่อ้างอิงโดย DocumentRoot สามารถอ่านได้โดยผู้ใช้ที่เว็บเซิร์ฟเวอร์ทำงานเป็น
ตรวจสอบว่าคุณมี index.html / index.htm ที่เหมาะสมและเว็บเซิร์ฟเวอร์ไม่พยายามทำรายชื่อไดเรกทอรี
ฉันพบปัญหาที่คล้ายกัน
ฉันไม่สามารถเรียกใช้ apache 2.4 เว้นแต่ว่าฉันใช้ 'อนุญาตจากทั้งหมด' นี่เป็นสิ่งที่น่ารำคาญเพราะฉันต้องการหยุดพักจากเวอร์ชัน <2.4 หลังจากการลองผิดลองถูกและการค้นหาจำนวนมากฉันพบการอ้างอิงถึง access_compat และตระหนักว่านี่เป็นเพียงความเข้ากันได้เท่านั้น แม้ว่าเอกสาร apache จะบอกว่าสามารถใช้ทั้งคู่ได้ แต่ก็แนะนำว่าไม่ควรใช้
ฉันลบโมดูลนี้ออกจากไฟล์โหลด / etc / sysconfig / apache2 สิ่งนี้จะแก้ไขปัญหาของฉันทันที
ขอแสดงความนับถือเลียม
ฉันกำลังให้บริการไฟล์จากไดเรกทอรีที่ไม่ได้มาตรฐานดังนั้นเพื่อทำการอัพเกรดฉันต้องแก้ไข /etc/apache2/apache2.conf และเพิ่ม: ดัชนีตัวเลือกดัชนี FollowSymLinks AllowOverride ไม่มีทั้งหมดที่ได้รับอนุญาต
หลังจากนี้และการเปลี่ยนแปลงที่แนะนำข้างต้นข้อผิดพลาด 403 ก็หายไป
httpd.conf
ไฟล์หรือconf.d
ไดเรกทอรี แต่มีapache2.conf
ไฟล์อยู่ ฉันพยายามย้ายไปยังconf-available
ไดเรกทอรีและได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันรีสตาร์ท apache2: apache2: ไม่สามารถเปิดไฟล์กำหนดค่า /etc/apache2/apache2.conf: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว - อาจเป็นสาเหตุอะไร?