私の現在の「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 [email protected]
DocumentRoot "/var/www/html/mywebsitecontent/"
ServerName myweb
</VirtualHost>
問題:
<Location>
ディレクティブで設定されているShibboleth認証が呼び出されます。"/var/www/html/"
フォルダーで他のWebサイトをホストしている場合、たとえば"demo"
websiteと言います。demo
Webサイトにアクセスしようとすると、<Location />
構成のため、Shibboleth認証も呼び出されます。そして、私はそれを望んでいません。<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 [email protected]
DocumentRoot "/var/www/html/mywebsitecontent/"
ServerName myweb
</VirtualHost>
編集:デモサイトに別の特定のVirtualHostを追加したいと思います。
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/html/demo/"
ServerName demo
</VirtualHost>
<VirtualHost *:80>
<Directory "/var/www/html/myweb/">
AuthType shibboleth
ShibRequireSession On
Require valid-user
</Directory>
ServerAdmin [email protected]
DocumentRoot "/var/www/html/mywebsitecontent/"
ServerName myweb
</VirtualHost>
デフォルトのVirtualHostが一番上にあることに注意してください。したがって、 http://127.0.0.1/ (ServerNameは127.0.0.1であり、デモではなく、mywebではないことに注意してください)でサイトにアクセスしている場合は、最初のサイトを取得します。
http://myweb/demo/
はhttp://myweb/
のサブフォルダであるため、<Location />
はそれをカバーします。
<Location />
ビットをServerName myweb
を使用してVirtualHost
ブロック内に配置する必要があります。 VirtualHost
の外にあるということは、すべてのApacheサーバーで有効になることを意味します。