跨多个虚拟主机的{apache基本身份验证

时间:2016-06-16 21:18:23

标签: apache virtualhost http-basic-authentication

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

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

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

以下是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使用Document Root / var / www / staging-sites / foo。
  • 我重新启动了apache以确保新配置已加载。

但是,当我打开http://foo.mydomain.com时,会显示该站点,而不会提示您输入Basic Auth凭据。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

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

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

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

删除该行允许基本身份验证(如上所述)正常工作。

答案 1 :(得分:0)

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