到目前为止,我一直在尝试在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的挑战。我有什么想法?
- 客户端到达HAProxy
- HAProxy连接到transmission-daemon
- 守护程序使用X-Transmission-Session-Id
回复- HAProxy以某种方式存储Session-Id,并将客户端发送的Session-Id替换为HAProxy捕获的会话ID。
醇>
经过大量谷歌搜索并玩设置后,我得到了一个近乎工作的配置:
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,某些负载平衡,一些设置为故障转移。它们都正常且快速地加载。如果我直接连接到传输守护程序服务器,它也会加载很快。
我会四处看看。
有什么想法吗?
提前致谢!
答案 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)
工作