如何在不使用 htaccess 的情况下使用密码保护 VirtualHost 指令

如何在不使用 htaccess 的情况下使用密码保护 VirtualHost 指令

我想通过在 apache 配置文件的指令内嵌入指令来密码保护 Web 服务器的 2000 端口。但是它没有像预期的那样提示输入密码。这是我在 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>

答案1

您的配置看上去并没有什么错误。

  • 配置完成后你重启了 apache 吗?
  • 检查您的日志中是否存在相关信息。

答案2

我认为它不起作用的几个原因如下:

  1. 我需要一个相应的 NameVirtualHost *:2000 来配合 VirtualHost 指令
  2. 我在该端口上使用反向 ssh 隧道,因此 ssh 在 Web 服务器之前捕获了它。隧道连接的 Web 服务器没有密码保护。

所以现在我的问题是如何在隧道末端用密码保护服务器。它是一台简单的服务器,不能使用密码。这就是为什么我希望通过 Apache 服务器保护对它的访问。

答案3

请尝试:位置和 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

相关内容