我正在尝试使用 Apache http 配置 mercurial 访问。它需要身份验证。我的/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
你应该把它放在一个 Location 指令中:
我在 ubuntu 10.04 上运行 Apache2——同样的问题,感谢您的解决方案。我发现我必须将配置放入
/etc/apache2/apache2.conf
您可以使用 htpasswd 生成用户名和密码。新文件:
要附加到现有文件:
您可以保护位置或目录。对于目录添加如下内容:
您还可以添加
Deny
和Allow
指令以获得更精细的控制。听起来您在
VirtualHost
. 通常,这些设置在Directory
指令下指定。您也可以使用
.htaccesss
文件,但在 Apache conf 中指定是一个很好的默认值,因为它的暴露较少。阿帕奇文档
我在 ubuntu 10.10 上运行 Apache2。我对上述所有解决方案都遇到了问题,但是效果很好(来自 apache docs):
与上述答案的最大区别似乎是 AuthBasicProvider 指令设置为“file”,而 Require 指令包括实际用户名之前的“user”位。
希望这可以帮助某人。
我们在运行内存优化版的apache,遇到了这个问题。
这是由于 apache 配置中不存在以下行: