7

我已将 haproxy 配置为将路径“/rawman”重定向到我服务器上的端口 8080。它第一次工作,但是一旦我访问默认站点,它就会停止工作。默认站点使用 mod_rewrite 在 apache 上运行,它正在捕获无效请求(使用 codeigniter),因此当我访问http://mysite.com/rawman?foo=bar时,我看到的是默认站点,而不是看到重定向的站点。

This is my haproxy config:

    global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        maxconn 4096
        user haproxy
        group haproxy
        daemon
defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

frontend http_proxy
        bind 0.0.0.0:8090
        acl is_ast path_beg /rawman
        use_backend ast if is_ast
        default_backend mysite

backend ast
        server ast 0.0.0.0:8080

backend mysite
        server local 0.0.0.0:80
4

1 回答 1

31

尝试在行option httpclose后设置srvtimeout

如果您不这样做,那么 haproxy 将使用目标服务器的 keepalive 设置。一旦您访问主站点,连接就会打开并保持打开状态,并且在您下一个请求时,haproxy 会运行哦,这不是很好:我有一个打开的连接。让我们使用它,即使它不应该。通过设置 httpclose 选项,它总是关闭连接,确保每个新请求都使用正确的连接。

为了弄清楚这一点,我失去了 3 个小时的生命。

于 2011-06-01T20:30:36.957 回答