Недавно я попытался установить тестовый сервер с Apache. Сайт должен работать под доменом www.mytest.com
. Я всегда получаю ошибку 403 Forbidden
. Я на сервере Ubuntu 10.10. Корень doc находится под dir /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 [email protected]
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-данными).
Если я набираю IP-адрес с моего рабочего стола, сайт отображается правильно. Я изменил файл hosts на своем рабочем столе, чтобы указать www.mytest.com
на IP-адрес сервера. Когда я его использую, я получаю 403
. Поскольку многие функции этого сайта чувствительны к положению, я должен иметь доступ к сайту по имени домена.
Еще одна напуганная вещь, даже если все файлы журналов созданы правильно, они не имеют информации об этой ошибке.
Я застрял. Может ли кто-нибудь помочь?
Apache 2.4.3 (или, возможно, чуть раньше) добавил новую функцию безопасности, которая часто приводит к этой ошибке. Вы также увидите сообщение журнала формы "клиент, отказавшийся от конфигурации сервера". Эта функция требует, чтобы идентификатор пользователя обращался к каталогу. Он включен DEFAULT в httpd.conf, который поставляется с Apache. Вы можете увидеть включение функции с директивой
Require all denied
В основном это говорит о запрете доступа ко всем пользователям. Чтобы устранить эту проблему, либо удалите директиву 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>
/etc/apache2/apache2.conf
и это помогло, спасибо!
Для 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>
Это может быть проблема с разрешениями.
каждый родительский путь к корню виртуального документа должен быть Readable, Writable и Executable веб-сервером. httpd user
в соответствии с на этой странице об ошибках Apache 403.
Поскольку вы используете Allow from all
, ваш заказ не должен иметь значения, но вы можете попробовать переключить его на Deny,Allow
, чтобы установить поведение по умолчанию "allow."
Переместите предложение Directory из виртуального хоста и поместите его перед объявлением виртуального хоста.
Дал мне орехи еще долгое время. Не знаю, почему. Это вещь Debian.
У меня была такая же проблема с виртуальным хостом на Ubuntu 14.04
Для меня работало следующее решение:
http://ubuntuforums.org/showthread.php?t=2185282
Он просто добавляет тег <Directory >
к /etc/apache2/apache2.conf
Я просто потратил несколько часов на эту глупую проблему.
Сначала измените разрешения, используя это в терминале
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>
И это те решения, которые я пробовал, теперь у меня есть работающие образы... yay!!!
К следующей проблеме (задачам)
моя проблема заключалась в том, что разрешение доступа к файлам было неправильным, я изменил разрешения каталога и работал у меня
sudo sh -c ". /etc/apache2/envvars; apache2 -S"
(список виртуальных хостов) и:sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""
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 *