如何在Apache httpd虚拟主机中configuration基本身份validation?

我正在尝试使用Apache httpconfigurationmercurial访问。 它需要authentication。 我的/etc/apache2/sites-enabled/mercurial如下所示:

 NameVirtualHost *:8080 <VirtualHost *:8080> UseCanonicalName Off ServerAdmin webmaster@localhost AddHandler cgi-script .cgi ScriptAliasMatch ^(.*) /usr/lib/cgi-bin/hgwebdir.cgi/$1 </VirtualHost> 

我在互联网上读到的每一个教程都告诉我要插入这些行:

 AuthType Basic AuthUserFile /usr/local/etc/httpd/users 

但是当我这样做时,我得到以下错误:

 # /etc/init.d/apache2 reload Syntax error on line 8 of /etc/apache2/sites-enabled/mercurial: AuthType not allowed here 

我的发行版是一个定制的Ubuntu,名为Turnkey Linux Redmine

你应该把它放在一个位置指令:

 <VirtualHost *:8080> <Location> Deny from all #Allow from (You may set IP here / to access without password) AuthUserFile /usr/local/etc/httpd/users AuthName authorization AuthType Basic Satisfy Any # (or all, if IPs specified and require IP + pass) # any means neither ip nor pass require valid-user </Location> ... </VirtualHost> 

我在Ubuntu 10.04上运行Apache2 – 同样的问题,感谢解决scheme。 我发现我必须把configuration放在/etc/apache2/apache2.conf

您可以使用htpasswd生成用户名和密码。 新文件:

 $ htpasswd -c /srv/auth/.htpasswd squire 

追加到现有的文件:

 $ htpasswd -b /srv/auth/.htpasswd squire2 tickleme2 

您可以保护位置或目录。 对于目录添加如下内容:

 <Directory /some/dir/cgi-bin/> Options +ExecCGI AddHandler cgi-script .cgi AuthType Basic AuthName 'Private scripts' AuthUserFile '/some/other/dir/.htpasswd' Require valid-user </Directory> 

您还可以添加DenyAllow指令进行更好的控制。

这听起来像你指定VirtualHost的身份validation设置。 通常,这些设置是在Directory指令下指定的。

您也可以使用.htaccesss文件,但在Apache conf中指定是一个很好的默认设置,因为它的暴露程度较低。

Apache文档

我们正在运行内存优化版本的Apache,并遇到了这个问题。

这是由于下面的行不在apacheconfiguration中:

 LoadModule authz_user_module modules/mod_authz_user.so 

我在Ubuntu 10.10上运行Apache2。 我一直有上述所有的解决scheme的问题,但这工作得很好(从Apache文档):

 <Directory / var / www />
  选项索引FollowSymLinks MultiViews
   AllowOverride全部
  订单允许,否认
  允许所有
   AuthType基本
   AuthName“限制”
   AuthBasicProvider文件
   AuthUserFile / etc / users
  要求用户访问者
 </目录>

与上面的答案最大的区别似乎是设置为“文件”的AuthBasicProvider指令和包含实际用户名之前的“用户”位的Require指令。

希望这有助于某人。