我的目的是让 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
,也没有任何效果。我确保到处都设置AllowOverride
为All
,但什么也没做。