Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在apache下使用http basic auth同时登录多个虚拟主机_Apache_Virtualhost_Basic Authentication - Fatal编程技术网

在apache下使用http basic auth同时登录多个虚拟主机

在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

我在一个域下有两个虚拟主机: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 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