Virtualhost не работает в Fedora с 403

Я создал проект в моем домашнем каталоге. Затем я создал виртуальный хост в новом файле httpd conf (я назвал его z-httpd.conf), который я создал в /etc/httpd/conf.d. Проблема в том, что я не могу получить доступ к названному виртуальному хосту, который я создал. Когда я перехожу к myservice.localhost, который я также добавил в / etc / hosts, я получаю ошибку 403. Файл z-httpd.conf выглядит следующим образом:

<Directory />
    AllowOverride none
    Require all denied
</Directory>


DocumentRoot "/var/www/html"

#
# Relax access to content within /var/www.
#
<Directory "/home/johndoe/src">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>


# Further relax access to the default document root:
<Directory "/home/johndoe/src/webservice">
    #
    Options Indexes FollowSymLinks

    AllowOverride None

    #
    Require all granted
</Directory>


#Add a virtual host
NameVirtualHost *:80
<VirtualHost *:80>
    ServerName myservice.localhost
    DocumentRoot /home/johndoe/src/webservice/public
    ServerPath /home/johndoe/src/webservice/public
    SetEnv APPLICATION_ENV "development"
    <Directory /home/johndoe/src/webservice/public>
        DirectoryIndex index.php
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Я заверил, что z-httpd.conf включен в основной файл конфигурации Apache, и у меня также есть файл index.php в моем DocumentRoot. Также пробовал setenforce 0 . Тоже не сработало.
conf) я создал в /etc/httpd/conf.d. Проблема в том, что я не могу получить доступ к названному виртуальному хосту, который я создал. Когда я перехожу к myservice.localhost, который я также добавил в / etc / hosts, я получаю ошибку 403. Файл z-httpd.conf выглядит следующим образом:

<Directory />
    AllowOverride none
    Require all denied
</Directory>


DocumentRoot "/var/www/html"

#
# Relax access to content within /var/www.
#
<Directory "/home/johndoe/src">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>


# Further relax access to the default document root:
<Directory "/home/johndoe/src/webservice">
    #
    Options Indexes FollowSymLinks

    AllowOverride None

    #
    Require all granted
</Directory>


#Add a virtual host
NameVirtualHost *:80
<VirtualHost *:80>
    ServerName myservice.localhost
    DocumentRoot /home/johndoe/src/webservice/public
    ServerPath /home/johndoe/src/webservice/public
    SetEnv APPLICATION_ENV "development"
    <Directory /home/johndoe/src/webservice/public>
        DirectoryIndex index.php
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Я заверил, что z-httpd.conf включен в основной файл конфигурации Apache, и у меня также есть файл index.php в моем DocumentRoot. Также пробовал setenforce 0 . Тоже не сработало.
conf) я создал в /etc/httpd/conf.d. Проблема в том, что я не могу получить доступ к названному виртуальному хосту, который я создал. Когда я перехожу к myservice.localhost, который я также добавил в / etc / hosts, я получаю ошибку 403. Файл z-httpd.conf выглядит следующим образом:

<Directory />
    AllowOverride none
    Require all denied
</Directory>


DocumentRoot "/var/www/html"

#
# Relax access to content within /var/www.
#
<Directory "/home/johndoe/src">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>


# Further relax access to the default document root:
<Directory "/home/johndoe/src/webservice">
    #
    Options Indexes FollowSymLinks

    AllowOverride None

    #
    Require all granted
</Directory>


#Add a virtual host
NameVirtualHost *:80
<VirtualHost *:80>
    ServerName myservice.localhost
    DocumentRoot /home/johndoe/src/webservice/public
    ServerPath /home/johndoe/src/webservice/public
    SetEnv APPLICATION_ENV "development"
    <Directory /home/johndoe/src/webservice/public>
        DirectoryIndex index.php
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Я заверил, что z-httpd.conf включен в основной файл conf Apache, и у меня также есть файл index.php в моем DocumentRoot. Также пробовал setenforce 0 . Тоже не сработало.
Вывод ls -lZa в DocumentRoot выглядит следующим образом:

drwxr-xr-x. 6 johndoe johndoe unconfined_u:object_r:user_home_t:s0 4096 Apr 16 12:31 .
drwxr-xr-x. 7 johndoe johndoe unconfined_u:object_r:user_home_t:s0 4096 Apr 17 10:23 ..
drwxr-xr-x. 2 johndoe johndoe unconfined_u:object_r:user_home_t:s0 4096 Apr 16 12:31 css
drwxr-xr-x. 2 johndoe johndoe unconfined_u:object_r:user_home_t:s0 4096 Apr 16 12:31 fonts
-rwxr-xr-x. 1 johndoe johndoe unconfined_u:object_r:user_home_t:s0  748 Apr 16 12:31 .htaccess
drwxr-xr-x. 2 johndoe johndoe unconfined_u:object_r:user_home_t:s0 4096 Apr 16 12:31 img
-rwxr-xr-x. 1 johndoe johndoe unconfined_u:object_r:user_home_t:s0 1255 Apr 16 12:31 index.php
drwxr-xr-x. 2 johndoe johndoe unconfined_u:object_r:user_home_t:s0 4096 Apr 16 12:31 js
-rwxr-xr-x. 1 johndoe johndoe unconfined_u:object_r:user_home_t:s0 1032 Apr 16 12:31 web.config

В ответ на один из комментариев я добавляю вывод httpd error_log:

[Tue Apr 17 13:02:45.838159 2018] [core:error] [pid 9883:tid 140703779542784] (13)Permission denied: [client ::1:43674] AH00035: access to / denied (filesystem path '/home/johndoe/src') because search permissions are missing on a component of the path
[Tue Apr 17 13:06:11.389019 2018] [mpm_event:notice] [pid 9879:tid 140704428511232] AH00492: caught SIGWINCH, shutting down gracefully
[Tue Apr 17 13:06:12.498547 2018] [core:notice] [pid 10363:tid 140006580465664] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Tue Apr 17 13:06:12.499134 2018] [suexec:notice] [pid 10363:tid 140006580465664] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
[Tue Apr 17 13:06:12.515517 2018] [lbmethod_heartbeat:notice] [pid 10363:tid 140006580465664] AH02282: No slotmem from mod_heartmonitor
[Tue Apr 17 13:06:12.519962 2018] [mpm_event:notice] [pid 10363:tid 140006580465664] AH00489: Apache/2.4.29 (Fedora) OpenSSL/1.1.0g-fips mod_perl/2.0.10 Perl/v5.26.1 configured -- resuming normal operations
[Tue Apr 17 13:06:12.519991 2018] [core:notice] [pid 10363:tid 140006580465664] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[Tue Apr 17 13:29:23.288313 2018] [core:error] [pid 10368:tid 140005758412544] (13)Permission denied: [client ::1:44974] AH00035: access to / denied (filesystem path '/home/johndoe/src') because search permissions are missing on a component of the path
[Tue Apr 17 13:29:29.223311 2018] [core:error] [pid 10368:tid 140005783590656] (13)Permission denied: [client 127.0.0.1:44392] AH00035: access to / denied (filesystem path '/home/johndoe/src') because search permissions are missing on a component of the path

И содержимое .htaccess (находится в public ):

RewriteEngine On
# The following rule tells Apache that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [L]
# The following rewrites all other queries to index.php. The 
# condition ensures that if you are using Apache aliases to do
# mass virtual hosting or installed the project in a subdirectory,
# the base path will be prepended to allow proper resolution of
# the index.php file; it will work in non-aliased environments
# as well, providing a safe, one-size fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}/index.php [L]

Дополнительная информация:
Версия сервера: Apache / 2.4.29 (Fedora) kernel-release: 4.15.4-300.fc27.x86_64

-1
задан 17 April 2018 в 12:11
2 ответа

Эта ошибка касается разрешений Unix, и это то, что вам нужно проверить. В некоторых случаях это также может быть вызвано SELinux.

В частности, это означает, что Apache не смог выполнить поиск в каталоге где-то над запрошенным файлом, поэтому вам необходимо проверить разрешения на всем пути.

К счастью, в Linux есть Инструмент для этого называется namei . Запустите namei -l / home / johndoe / src , и затем вы сможете проверить и исправить разрешения для любого каталога, в котором возникла проблема.

Готов поспорить, это будет выглядеть примерно так:

[johndoe@localhost src]$ namei -l /home/johndoe/src
f: /home/johndoe/src
dr-xr-xr-x root    root    /
drwxr-xr-x root    root    home
drwx------ johndoe johndoe johndoe
drwxr-xr-x johndoe johndoe src

Теперь проблема очевидно: каталог / home / johndoe не имеет разрешений на поиск никому, кроме владельца. Вы, очевидно, исправите это с помощью chmod + x /home/johndoe[1138361 sizes.[1275 sizes). Вам также необходимо проверить логическое значение SELinux httpd_read_user_content . Без этого логического значения веб-сервер не сможет получить доступ ни к чему в домашних каталогах пользователей.

[root@localhost ~]$ semanage boolean -l | grep httpd_read_user_content
httpd_read_user_content        (off  ,  off)  Allow httpd to read user content

Если он выключен, как в этом примере, включите его.

[root@localhost ~]$ setsebool -P httpd_read_user_content on
2
ответ дан 5 December 2019 в 20:21

Это связано с тем, что вам явно запрещен доступ Apache к каталогу '/', что не является необходимым

 AH00035: access to / denied (filesystem path '/home/johndoe/src') because search permissions are missing on a component of the path

Удалите это

<Directory />
    AllowOverride none
    Require all denied
</Directory>

Я также хотел бы спросить, почему вы добавили виртуальный хост, а не просто добавили это к конфигурации по умолчанию - поскольку вы слушаете все IP-адреса порта по умолчанию *: 80 , а также почему вы обслуживаете файлы из своего домашнего каталога. - Apache не владеет этим каталогом / var / www / - вам необходимо будет изменить владельца и, возможно, группу, а также установить правильные разрешения.

chown -R apache:apache /home/johndoe/src

&

chmod -R 755 /home/johndoe/src
-2
ответ дан 5 December 2019 в 20:21

Теги

Похожие вопросы