在apache下使用http basic auth同时登录多个虚拟主机
我在一个域下有两个虚拟主机:a.mydomain.com、b.mydomain.com。 在apache的全局配置中,我有以下内容:在apache下使用http basic auth同时登录多个虚拟主机,apache,virtualhost,basic-authentication,Apache,Virtualhost,Basic Authentication,我在一个域下有两个虚拟主机:a.mydomain.com、b.mydomain.com。 在apache的全局配置中,我有以下内容: <Directory /> Options FollowSymLinks AllowOverride None AuthType Basic AuthName "Restricted Area" AuthBasicProvider file AuthUserFile /etc/httpd/password_http_auth Require user
<Directory />
Options FollowSymLinks
AllowOverride None
AuthType Basic
AuthName "Restricted Area"
AuthBasicProvider file
AuthUserFile /etc/httpd/password_http_auth
Require user mydomain_user
</Directory>
选项如下符号链接
不允许超限
AuthType Basic
AuthName“限制区”
AuthBasicProvider文件
AuthUserFile/etc/httpd/password\u http\u auth
需要用户mydomain\u用户
这适用于所有虚拟主机,使其具有基本的身份验证保护。但是,在我访问mydomain.com并在那里进行身份验证之后,我需要输入a.mydomain.com和b.mydomain的用户名和密码
所以我的问题是:有没有一种方法可以只在mydomain.com上进行身份验证,而用户不需要再次输入该域下所有虚拟主机的用户名和密码
提前感谢。在httpd.conf或apache2.conf中完成的任何配置都是全局配置,将应用于所有配置的站点 仅将其应用于其中一个站点。将身份验证配置移动到特定的虚拟主机配置文件
<Directory />
# keep these
Options FollowSymLinks
AllowOverride None
# move these to the vhost configuration you want to protect
AuthType Basic
AuthName "Restricted Area"
AuthBasicProvider file
AuthUserFile /etc/httpd/password_http_auth
Require user mydomain_user
</Directory>
#留着这些
选项如下符号链接
不允许超限
#将这些移动到要保护的vhost配置
AuthType Basic
AuthName“限制区”
AuthBasicProvider文件
AuthUserFile/etc/httpd/password\u http\u auth
需要用户mydomain\u用户
这可能对某些人有用:
我有一个有许多别名的虚拟主机。它是一个多站点,为多个网站设置了一个源代码。我需要对某些主机进行基本身份验证,但对其他主机不需要,而虚拟主机对所有主机/域都是通用的
下面是我是如何做到的,它工作得很好(Apache2.4/Ubuntu18LTS):
在上面的示例中,我还有一个安全目录(第2行),它与正则表达式一起工作,因此它将与该目录中的任何文件匹配
第1行是安全主机名。请注意每个点字符前的反斜杠
根据需要为主机或目录添加尽可能多的行
SetEnvIf Host "secure\.host\.com" SECURED
SetEnvIfNoCase Request_URI "^/secure-dir/" SECURED
AuthType Basic
AuthName "Basic Auth Message"
AuthUserFile /var/www/public-html/.htpasswd
Require valid-user
Satisfy any
Order allow,deny
Allow from all
Deny from env=SECURED