.htpasswd 用户名/密码已获取但似乎不起作用?

.htpasswd 用户名/密码已获取但似乎不起作用?

我的目的是让 Jenkins 位于 apache 后面。它使用代理密码(用于 /),我希望它位于一些基本身份验证后面。

所以我设置了一个 apache2,使用 digitalocean 的教程作为起点

我已经生成了一个.htpasswd带有用户名/密码的文件test

每当我配置我的VirtualHost并特意指向一个不存在的文件进行身份验证时,我都会在 apache 日志中看到错误。每当我使用正确的文件时,.htpasswd我都不会看到这样的日志。

我的浏览器中会弹出 Basic Auth 用户名/密码,正如预期的那样。每当我使用错误的用户名(不存在)时,这也会在日志中按预期出现。当我使用正确的test凭据时,我不会在日志中看到此类消息。

但是,无论使用正确的凭据,我仍然会看到基本身份验证凭据弹出窗口重新出现。(并且我的访问日志中出现 401)

我可以看到那些登录尝试(使用正确的凭据)。我确实得到了 401(我在访问日志中看到了它)。我没有在错误日志中看到任何关于无效凭据的错误。每当我输入错误的凭据时,它们都会出现在那里。

为了完整起见,这是我在虚拟主机上的配置:

<VirtualHost *:80>
  ProxyPreserveHost On
  ProxyRequests On

  ServerName <bla>.<somehostname>.<bar>
  ServerAlias *.<somehostname>.<bar>

  ProxyPass / http://localhost:8090/
  ProxyPassReverse / http://localhost:8090/

  AllowEncodedSlashes NoDecode

  <Proxy http://localhost:8090>
    AllowOverride        All
    AuthType             Basic
    AuthUserFile         "/etc/apache2/.htpasswd"
    Require              valid-user
    Order allow,deny
    Allow from all
  </Proxy>

  ErrorLog ${APACHE_LOG_DIR}/ci_error.log
  CustomLog ${APACHE_LOG_DIR}/ci_access.log combined

  Header set Access-Control-Allow-Origin "*"
</VirtualHost>

我不知道下一步该做什么。我尝试了各种各样的方法。比如非编码的用户名/密码(没用,我使用了工具htpasswd)。我尝试使用Location而不是Proxy,也没有任何效果。我确保到处都设置AllowOverrideAll,但什么也没做。

相关内容