Я пытаюсь настроить ртутный доступ с помощью Apache http. Требуется аутентификация. Мой /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:
<VirtualHost *:8080>
<Location /> #the / has to be there, otherwise Apache startup fails
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>
Я запускаю Apache2 на ubuntu 10.04 - такая же проблема и спасибо за решение. Я обнаружил, что мне нужно поместить конфигурацию в /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
. Обычно эти настройки указываются в Directory
директива.
Вы также можете использовать .htaccesss
файлы, но указание в Apache conf - хорошее значение по умолчанию, поскольку оно имеет меньшее значение.
Я запускаю Apache2 на ubuntu 10.10. У меня были проблемы со всеми вышеперечисленными решениями, но это сработало (из документов apache):
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all AuthType Basic AuthName "Restricted" AuthBasicProvider file AuthUserFile /etc/users Require user visitor </Directory>
Самым большим отличием от приведенных выше ответов, по-видимому, является директива AuthBasicProvider, для которой установлено значение «file», и директива Require, включая бит «user» перед фактическим именем пользователя.
Надеюсь, это кому-то поможет.
Мы используем версию apache, оптимизированную для памяти, и столкнулись с этой проблемой.
Это произошло из-за того, что в конфигурации apache не было следующей строки:
LoadModule authz_user_module modules/mod_authz_user.so