Назад | Перейти на главную страницу

Как настроить базовую аутентификацию на виртуальных хостах Apache httpd?

Я пытаюсь настроить ртутный доступ с помощью 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 - хорошее значение по умолчанию, поскольку оно имеет меньшее значение.

Документация Apache

Я запускаю 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