如何在Apache

时间:2017-02-15 17:39:55

标签: apache buildbot

如何在Apache中将基本身份验证与反向代理相结合?

我有一个Apache站点,当前配置为使用此配置使用基本auth和htpasswd文件:

<VirtualHost *:80>

    # Requires: a2enmod proxy_http
    ProxyPass / http://127.0.0.1:8010/

    <Location />
        AuthType Basic
        AuthName "Sensitive"
        AuthUserFile /usr/local/myproject/htpasswd
        Require valid-user
    </Location>

</VirtualHost>

Apache充当在端口:8010上提供服务的Buildbot服务器的包装器。但是,此应用程序已升级,因此现在需要使用websockets。建议的Apache configuration是:

<VirtualHost *:80>

    <Location /ws>
      ProxyPass ws://127.0.0.1:8010/ws
      ProxyPassReverse ws://127.0.0.1:8010/ws
    </Location>

    ProxyPass /ws !
    ProxyPass / http://127.0.0.1:8010/
    ProxyPassReverse / http://127.0.0.1:8010/

</VirtualHost>

但是,这不使用任何身份验证。我尝试重新添加上一个配置中的<Location />部分,所以我现在有:

<VirtualHost *:80>

    <Location />
        AuthType Basic
        AuthName "Sensitive"
        AuthUserFile /usr/local/myproject/htpasswd
        Require valid-user
    </Location>

    <Location /ws>
      ProxyPass ws://127.0.0.1:8010/ws
      ProxyPassReverse ws://127.0.0.1:8010/ws
    </Location>

    ProxyPass /ws !
    ProxyPass / http://127.0.0.1:8010/
    ProxyPassReverse / http://127.0.0.1:8010/

</VirtualHost>

虽然Apache现在正确地提示输入我的用户名+密码,但Buildbot仍未获得经过身份验证的用户名,仍然会为匿名用户呈现。

如何修复此配置以将用户名(我相信REMOTE_USER标题)传递到反向代理后面的网络应用程序?

0 个答案:

没有答案