Помилка 403 після оновлення до apache2.4


34

Після оновлення з сервера Ubuntu 13.04 веб-сторінки не відображатимуться.

Помилка 403 Заборонено Ви не маєте дозволу на доступ / на цьому сервері.

Я змінив збереження контролю доступу з apache2.2 на apache2.4, але це не спрацювало. Що я ще міг зробити?

Відповіді:


59

Сталося те, що синтаксис файлів конфігурації в apache2.4 змінився.

Джерело: Це трапилося і зі мною після того, як я перейшов до 13.10

файли conf.d

Усі файли, в яких було, /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до всіх своїх конфігураційних файлів 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 на якості відповіді на переповнення стека.

Простіше кажучи, якщо ви оновили до apache2.4 і зберегли стару httpd.confверсію apache2.2, дозволити директиву слід працювати нормально. Якщо ви оновили httpd.conf(що я б запропонував), ви отримаєте 403 помилки, поки не зміните директиви Order/ Allow/ Denyна їх еквівалент Require.

Параметри каталогу

Якщо ви були варіанти Directory, до відома , що всі вони повинні передувати +або -або жоден з них взагалі. Змішування обох заборонено:

Приклад:

Це дозволено:

<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 на офіційній документації.


1
У моїй системі немає жодного httpd.confфайлу чи conf.dкаталогу. Але є apache2.confфайл. Я спробував перенести його в conf-availableкаталог, і при перезапуску apache2: помилка : не вдалося відкрити файл конфігурації /etc/apache2/apache2.conf: Немає такого файлу чи каталогу - Що може бути причиною?
Амаль Муралі

@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 virtualhosts більше не працює після оновлення до 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 None Не вимагати всіх

Після цього та рекомендованих змін вище, помилка 403 пішла.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.