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

Как защитить паролем директиву VirtualHost без htaccess

Я хотел бы защитить паролем порт 2000 веб-сервера, встроив директиву в директиву конфигурационного файла apache. Однако он не запрашивал пароль, как ожидалось. Вот что у меня было в конфигурационном файле apache:

<VirtualHost *:2000>
  ServerName www.server.com
  ServerAdmin email
  DocumentRoot /var/www/html
  ErrorLog logs/server.com-error_log

  <Location / >
    AuthType Basic
    AuthName "TAP Surveillance"
    AuthUserFile /var/www/s2/.htpasswd-users
    Require valid-user
  </Location>
</VirtualHost>

Похоже, что с вашей конфигурацией нет ничего неправильного.

  • Вы перезапустили apache после настройки?
  • Проверьте свои журналы на наличие соответствующих сообщений.

Пара причин, почему я считаю, что это не сработало:

  1. Мне нужен был соответствующий NameVirtualHost *: 2000 для работы с директивой VirtualHost.
  2. Я использовал обратный туннель ssh на этом порту, поэтому ssh перехватил его до веб-сервера. Веб-сервер, к которому подключен туннель, не имеет защиты паролем.

Итак, теперь мой вопрос: как защитить паролем сервер в конце туннеля. Это простой сервер, не способный к паролям. Вот почему я надеялся защитить доступ к нему через сервер apache.

Пожалуйста, попробуйте: местоположение и DocumentRoot должны быть идентичными

<VirtualHost *:2000>
   ServerName www.server.com
   ServerAdmin email
   DocumentRoot /var/www/html
   ErrorLog logs/server.com-error_log
   <Location /var/www/html >
    AuthType Basic
    AuthName "TAP Surveillance"
    AuthUserFile /var/www/s2/.htpasswd-users
    Require valid-user
   </Location>
</VirtualHost>

Затем перезапустите Apache