我们有一台安装了 apache 的服务器,作为在同一台机器上运行的后端 Web 服务的身份验证前端。
该设置最初似乎有效,但我们很快意识到,每次我们单击链接、返回或重新加载页面时,apache 都会要求进行身份验证。我们现在不知道该如何解决这个问题。
我们的 apache2 虚拟主机文件:
<VirtualHost *:80>
ServerName app.ourdomain.com
ErrorLog /var/log/apache2/graphiti-error.log
CustomLog /var/log/apache2/graphiti-access.log common
<Location "/">
require valid-user
order allow,deny
Allow from all
AuthType Basic
AuthName "Stats"
AuthBasicProvider file
AuthUserFile /etc/passwd_lp
</Location>
ProxyRequests off
ProxyPreserveHost on
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
</VirtualHost>
我们在 Ubuntu EC2 12.04 上使用 Apache2 v2.2.22
我们已经尝试过;将 Auth 声明移入<Proxy>
块;设置ProxyRequests on
;设置ProxyPreserveHost off
。
谢谢
答案1
我现在已经解决了这个问题。从本质上讲,这与 Apache 无关。Graphiti 使用 JavaScript 函数向 Graphite 服务发出 HTTP 请求,我们已将其设置为单独的虚拟主机,并且还设置了 Auth(有些用户更喜欢直接使用它)。
因此,基本上,graphite 使用的 URL 中没有用户/密码,因此每个人都会触发 Auth 提示。要解决这个问题,我们只需要更新模板,以便 URL 按照语法生成http://<user>:<password>@<host>
。