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 上进行身份验证,并且该用户不需要为该域下的所有虚拟主机再次输入用户名和密码?

提前谢谢。

4

2 回答 2

1

在 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>
于 2015-12-09T12:41:24.530 回答
0

这可能对某人有用:

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

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

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 行是安全主机名。请注意每个点字符前的反斜杠!

根据需要为主机或目录添加尽可能多的行。

于 2019-04-12T12:20:07.273 回答