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

问题描述 投票:1回答:2

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

这适用于所有具有基本身份验证保护的虚拟主机。但是,在我去mydomain.com并在那里进行身份验证后,我需要输入a.mydomain.com和b.mydomain的用户名和密码。

所以我的问题是:有没有办法只在mydomain.com上进行身份验证,而且该用户不需要再为该域下的所有虚拟主机输入用户名和密码?

谢谢你。

apache virtualhost basic-authentication
2个回答
0
投票

在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>

0
投票

这可能对某些人有用:

我有一个包含许多别名的虚拟主机。它是一个多站点设置,具有多个网站的单一源代码。我需要对某些主机进行基本身份验证,但对于其他主机则不需要,而虚拟主机对所有主机/域都是通用的。

我是这样做的,它工作正常(Apache 2.4 / Ubuntu 18 LTS):

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

在上面的示例中,我还有一个安全目录(第2行),它使用正则表达式,因此它将与该目录中的任何文件匹配。

第1行是安全主机名。请注意每个点字符前面的反斜杠!

根据需要为主机或目录添加任意数量的行。

© www.soinside.com 2019 - 2024. All rights reserved.