HAProxy背后的传输Torrent - 用作会话标识符和粘性标记的HTTP响应标头

时间:2015-12-23 23:33:56

标签: haproxy bittorrent

到目前为止,我一直在尝试在HAProxy后面运行Transmission。

如果我只是添加一个新的后端并按如下方式路由流量:

frontend http-in
    bind *:80
    reqadd X-Forwarded-Proto:\ http

    acl host1 hdr_end(host) -i web.host1.host
    use_backend apache_backend if host1

    acl transmission_host hdr_end(host) -i transmission.host1.host
    use_backend transmission_backend if transmission_host

然后我收到409冲突错误,指出我的session-id标头无效。这是非常明显和预期的,因为中间有一个代理。

我想重新编译传输以摆脱检查,但最终决定面对更多学习HAProxy的挑战。我有什么想法?

  
      
  1. 客户端到达HAProxy
  2.   
  3. HAProxy连接到transmission-daemon
  4.   
  5. 守护程序使用X-Transmission-Session-Id
  6. 回复   
  7. HAProxy以某种方式存储Session-Id,并将客户端发送的Session-Id替换为HAProxy捕获的会话ID。
  8.   

经过大量谷歌搜索并玩设置后,我得到了一个近乎工作的配置:

frontend http-in
    bind *:80
    reqadd X-Forwarded-Proto:\ http

    capture response header X-Transmission-Session-Id len 48

    acl host1 hdr_end(host) -i web.host1.host
    use_backend apache_backend if host1

    acl transmission_host hdr_end(host) -i transmission.host1.host
    use_backend transmission_backend if transmission_host

backend transmission_backend
    mode http
    http-request set-header X-Transmission-Session-Id %hs

    server transmission-daemon transmission.intranet:9091

我的配置示例已经汇总。

它有效。我收到一个登录提示进行传输,但页面加载速度非常慢。我已经超过10分钟,仍然没有满载。

更多页面通过此代理:HTTP,HTTPS,TCP,某些负载平衡,一些设置为故障转移。它们都正常且快速地加载。如果我直接连接到传输守护程序服务器,它也会加载很快。

我会四处看看。

有什么想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

3年后, 根据我在https://gist.github.com/yuezhu/93184b8d8d9f7d0ada0a186cbcda9273

中看到的内容

您应该在前端http-in中捕获请求和响应, 我没有做更多的事情,但是后端似乎需要

stick-table type binary len 48 size 30k expire 30m
stick store-response hdr(X-Transmission-Session-Id)
stick on hdr(X-Transmission-Session-Id)

工作