我正在尝试使用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>
您还可以添加Deny
和Allow
指令进行更好的控制。
这听起来像你指定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指令。
希望这有助于某人。