Мой текущий файл "httpd.conf". (Содержит только важные части)
ServerRoot "/etc/httpd"
Listen 80
ServerAdmin root@localhost
ServerName 127.0.0.1
<Directory />
AllowOverride none
Require all denied
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/www">
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Location />
AuthType shibboleth
ShibRequireSession On
Require valid-user
</Location>
<VirtualHost *:80>
ServerAdmin webmaster@myweb.com
DocumentRoot "/var/www/html/mywebsitecontent/"
ServerName myweb
</VirtualHost>
Проблема:
<Location>
директива."/var/www/html/"
папка, например, скажем "demo"
интернет сайт.demo
сайт с http://127.0.0.1/demo/index.html, он также вызовет аутентификацию Shibboleth из-за <Location />
конфигурация. И я этого не хочу.<Location>
работать только на "/var/www/html/myweb/"
.Что я пробовал:
<Location /myweb>
- Не работает<Location>
в <VirtualHost>
- Не работаетВ соответствии с https://httpd.apache.org/docs/2.4/mod/core.html#location
<Location> sections operate completely outside the filesystem. This
has several consequences. Most importantly, <Location> directives
should not be used to control access to filesystem locations. Since
several different URLs may map to the same filesystem location, such
access controls may by circumvented.
Я думаю, вам нужно что-то ближе к этому:
<Directory "/var/www/html/myweb/">
AuthType shibboleth
ShibRequireSession On
Require valid-user
</Directory>
<VirtualHost *:80>
ServerAdmin webmaster@myweb.com
DocumentRoot "/var/www/html/mywebsitecontent/"
ServerName myweb
</VirtualHost>
edit: Я думаю, вы хотите добавить еще один конкретный VirtualHost для демонстрационного сайта.
<VirtualHost *:80>
ServerAdmin webmaster@myweb.com
DocumentRoot "/var/www/html/demo/"
ServerName demo
</VirtualHost>
<VirtualHost *:80>
<Directory "/var/www/html/myweb/">
AuthType shibboleth
ShibRequireSession On
Require valid-user
</Directory>
ServerAdmin webmaster@myweb.com
DocumentRoot "/var/www/html/mywebsitecontent/"
ServerName myweb
</VirtualHost>
Обратите внимание, что VirtualHost по умолчанию находится вверху. Итак, если вы заходите на сайт с http://127.0.0.1/ (обратите внимание, что ServerName будет 127.0.0.1, а не demo, не myweb) вы получите первый.
http://myweb/demo/
является подпапкой http://myweb/
Так что ваши <Location />
покрывает это.
Вам нужно поставить <Location />
немного внутри VirtualHost
блок с ServerName myweb
. Находясь вне любого VirtualHost
означает, что он действует для всего вашего сервера Apache.