【问题标题】:apache basic auth across multiple virtualhosts跨多个虚拟主机的 apache 基本身份验证
【发布时间】:2016-06-16 21:18:23
【问题描述】:

我有几个临时站点作为服务器上的虚拟主机,还有几个面向公众的虚拟主机站点。声明站点都在一个目录下(例如,/var/www/staging-sites/[site-document-root])。

到目前为止,我一直在为每个虚拟主机配置 HTTP Basic Auth,但似乎应该有一种方法可以为所有虚拟主机配置一次。

问题“apache global basic auth”表明我可以将基本身份验证指令放在主 apache 配置文件中的 <Directory /var/www/staging-sites> 容器中,但这样做不会导致浏览器提示输入凭据。

这是tail -n 7 /etc/apache2/apache2.conf的输出:

<Directory "/var/www/staging-sites/">
  AuthType Basic
  AuthName "Authentication Required"
  AuthBasicProvider file
  AuthUserFile /var/www/staging-sites/.htpasswd
  Require valid-user
</Directory>
  • 我已验证 /var/www/staging-sites/.htpasswd 存在,并且站点 foo.mydomain.com 使用文档根目录 /var/www/staging-sites/foo。
  • 我已重新启动 apache 以确保加载新配置。

但是,当我打开 http://foo.mydomain.com 时,会显示该站点,而不会提示输入基本身份验证凭据。

我做错了什么?

【问题讨论】:

  • 您确实应该为每个虚拟主机单独配置基本身份验证要求,从而明确。但是由于您使用.htpasswd 文件的绝对 路径,因此您可以对所有 虚拟主机使用相同的文件。这减少了工作量。

标签: apache virtualhost basic-authentication


【解决方案1】:

解决了。问题出在虚拟主机配置本身的这一部分:

<Directory /var/www/staging-sites/foo>
  Require all granted
</Directory>

显然所有虚拟主机都是使用等效配置创建的。正如所料,虚拟主机配置中的Require all granted 优于全局配置中的Require valid-user

删除该行可以使上面配置的基本身份验证正常工作。

【讨论】:

    【解决方案2】:

    您也可以离开Require all granted,但添加Satisfy all

    【讨论】:

    • (请详细说明您的问题。否则,这篇文章似乎没有为问题提供quality answer。请编辑您的答案,或者将其作为对该问题的评论发布)。
    猜你喜欢
    • 1970-01-01
    • 2016-02-18
    • 2018-01-15
    • 1970-01-01
    • 2015-01-27
    • 2015-09-14
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多