反向代理受NTLM保护的网站

Sau*_*rup 2 sharepoint tfs reverse-proxy http haproxy

如何向受NTLM保护的网站(如TeamFoundationSharePoint)代理请求?我一直收到401身份验证错误.

Sau*_*rup 7

根据此Microsoft TechNet文章,您不能.

Microsoft NTLM使用有状态HTTP,这违反了HTTP/1.1 RFC.它依赖于身份验证(涉及与几个初始401错误的握手的事件)以及后续连接通过从客户端到服务器的完全相同的连接来完成.这使得HTTP代理几乎不可能,因为每个请求通常会通过从打开的连接池中挑选的新连接或随机连接.它可以做到.

NGiNX显然通过"ntlm"选项支持这一点,但这是他们商业产品的一部分.Apache HTTPD似乎有几个实验性补丁,但这需要重建Apache.TinyProxy也不支持这一点.HAProxy来救援!

以下是运行配置的示例 - 它是一个使用单个后端服务器的相当简单的设置:

backend backend_tfs
    server static teamfoundation.mycompany.com:8080 check maxconn 3
    mode http
    balance roundrobin
    option http-keep-alive
    option prefer-last-server
    timeout server 30s
    timeout connect 4s

frontend frontend_tfs
    # You probably want something other than 127.0.0.1 here:
    bind 127.0.0.1:8080 name frontend_tfs
    mode http
    option http-keep-alive
    timeout client 30s
    default_backend backend_tfs
Run Code Online (Sandbox Code Playgroud)

这里的重要选项是http-keep-aliveprefer-last-server.