Я искал много информации по этому поводу, но ни одно из предложенных решений мне не помогло.
Что у меня есть:
rhel7
системаapache 2.4
/var/www/domain.com/public_html
/var/www/domain.com/publik_html/src
=> /home/user/src
/home/user/src
у меня есть index.html
с некоторым текстомМоя конфигурация apache VH (/etc/httpd/sites-available/domain.com.conf
):
<VirtualHost *:80>
ServerName www.domain.com
ServerAlias domain.com
DocumentRoot /var/www/domain.com/public_html
<Directory /var/www/domain.com/public_html>
Options Indexes FollowSymLinks
Require all granted
AllowOverride All
</Directory>
</VirtualHost>
Некоторые интересующие разделы в основной конфигурации apache:
#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
#
<Directory />
AllowOverride none
Require all denied
</Directory>
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"
#
# Relax access to content within /var/www.
#
<Directory "/var/www">
Options Indexes FollowSymLinks
AllowOverride None
# Allow open access:
Require all granted
</Directory>
# Further relax access to the default document root:
<Directory "/var/www/html">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
Проблема: когда я пытаюсь получить доступ к domain.com/src/index.html
мне запрещено.
Что я пробую:
chmod o+x /home /home/user /home/user/src /home/user/src/index.html
chown -R apache:apache /var/www/
chown -R apache:apache /home/user/src/
FollowSymLinks
и SymLinksIfOwnerMatch
chmod
Что еще можно попробовать? Спасибо...
UPD # 1: SElinux отключен
Ах, просто проблема в х разрешениях на папки. Извините и спасибо за помощь!
Кроме того, это тоже мне помогает: https://askubuntu.com/questions/537032/how-to-configure-apache2-with-symbolic-links-in-var-www
Если вы используете систему на основе rhel7 (centos, fedora и т.д.), у вас по умолчанию включен SElinux. На моей практике 95% проблемы - это несоответствие конфигурации selinux, я думаю, что ваша конфигурация apache правильная. Выполните с правами root:
# getenfore
При отключенном режиме selinux вывод будет, так что проблема не в этом. Вывод :
disabled
Если вывод будет Permissive или Enforce. Просто измените для тестирования режима SELinux, проверьте getenforce, что он изменился:
# setenforce 0
# getenfore
Попробуйте еще один HTTP-запрос с вашим сервером apache (попробуйте загрузить страницу в своем браузере и укажите адрес example.com). Если поможет это решение, пишите сюда. Все решения написаны вверху только для поиска проблемы, не работайте на рабочем сервере с этими изменениями. Пожалуйста, не отключайте SELinux, как это делают многие администраторы, это небезопасно. Я напишу вторую часть команды для включения разрешения SELinux после того, как вы написали, если первая часть вступит в силу.