Apache VirtualHost 403 Заборонено


123

Нещодавно я намагався налаштувати тестовий сервер з Apache. Сайт має працювати під доменом www.mytest.com. Я завжди отримую 403 Forbiddenпомилку. Я на серверній версії Ubuntu 10.10. Корінь doc знаходиться під дір /var/www. Нижче наведено мої налаштування:

Зміст / 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файлу в корені doc. Дозволи встановлені правильно (читаються за допомогою 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
Я хотів би зауважити, що якщо у вас виникає ця проблема при використанні віртуальних хостів, вам потрібно буде додати "Вимагати всіх наданих" до кожного параметра віртуального хоста у файлі apache / conf / extra / httpd-vhosts.conf.
Soundfx4

1
Я додав цю директиву до, /etc/apache2/apache2.confі це допомогло, дякую!
ДмитМедв

@ Soundfx4, apache/conf/extraвсередині папки не називається/etc/apache2
Чорний

Я додав /var/dev/website.com і отримував помилку 403. Додавання запропонованої директиви до /etc/apache2/apache2.conf (ubuntu) зробило свою справу. Спасибі, хлопці!
LoveFineArt

Дякую вам сер. Apache важче і важче працювати в ці дні ...
OoDeLally

15

Для apache Ubuntu 2.4.7 я, нарешті, виявив, що вам потрібно передати білий список вашого віртуального хоста в апахе2.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

Перемістіть пункт «Каталог» з virtualhost і поставте його перед тим, як оголосити virtualhost.

Давно мене кидають горіхи. Не знаю чому. Це Debian справа.


Вау, це так дивно.
-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>

І це ті рішення, які я спробував, тепер у мене є функціонуючі образи ... так !!!

До наступних проблем

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