Apache VirtualHost 403 запрещено - PullRequest
       30

Apache VirtualHost 403 запрещено

112 голосов
/ 05 августа 2011

Я недавно пытался настроить тестовый сервер с Apache.Сайт должен работать под доменом www.mytest.com.Я всегда получаю ошибку 403 Forbidden.Я на Ubuntu 10.10 серверной редакции.Корень документа находится в директории /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 в корне моего документа.Права доступа установлены правильно (доступно для чтения через www-data).

Если я введу IP-адрес со своего рабочего стола, сайт будет отображаться правильно.Я изменил файл hosts на рабочем столе, указав www.mytest.com на IP-адрес сервера.Когда я использую его, я получаю 403.Так как многие функции этого сайта чувствительны к именам сайтов, я должен иметь возможность доступа к сайту по доменному имени.

Еще одна забавная вещь: даже если все файлы журнала созданы правильно, они не имеют никакой информации относительноэта ошибка.

Я застрял.Кто-нибудь может помочь?

Ответы [ 8 ]

274 голосов
/ 18 декабря 2012

В 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>
13 голосов
/ 24 августа 2014

Для 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 голосов
/ 28 сентября 2011

Это может быть проблема с разрешениями.

каждый родительский путь к корневому каталогу виртуального документа должен быть доступен для чтения, записи и выполнения веб-сервером httpd user

согласно этой странице об ошибках Apache 403.

Поскольку вы используете Allow from all, ваш заказ не должен иметь значения, но вы можете попробовать переключить его на Deny,Allow для установки поведение по умолчанию для «разрешения».

5 голосов
/ 04 октября 2012

Переместите предложение Directory из виртуального хоста и поместите его перед объявлением виртуального хоста.

Тоже долго сводил меня с ума. Не знаю почему. Это вещь Debian.

0 голосов
/ 24 февраля 2018

Если вы все сделали правильно, просто дайте разрешение домашнему каталогу, например:

sudo chmod o+x $HOME

тогда

sudo systemctl restart apache2
0 голосов
/ 02 ноября 2015

У меня была такая же проблема с виртуальным хостом в Ubuntu 14.04

Для меня сработало следующее решение:

http://ubuntuforums.org/showthread.php?t=2185282

Это просто добавление <Directory > тег к /etc/apache2/apache2.conf

0 голосов
/ 15 ноября 2014

Я просто потратил несколько часов на эту глупую проблему

Сначала измените разрешения, используя это в терминале

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

Вы редактируете тех, кто использует пико в терминале

Я также создал каталог для изображений специально для того, чтобы при вводе в адресной строке браузера domainname.com/images вы получали список фотографий, которые можно загрузить и которые необходимо успешно загрузить, чтобы указать файлы изображений, которые работает нормально

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

И вот те решения, которые я попробовал, теперь у меня есть работающие образы ... ууу !!!

К следующей задаче (ям)

0 голосов
/ 10 марта 2014

Проблема была в том, что права доступа к файлу были неправильными.

Я изменил права доступа к каталогу, и он заработал.

...