我已将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
答案 0 :(得分:30)
尝试在option httpclose
行之后设置srvtimeout
。
如果你不这样做,那么haproxy使用目标服务器的keepalive设置。一旦你访问主站点,连接就会被打开并保持打开状态,并且在你的下一个请求中,haproxy会哦,不是很好:我有一个开放的连接。让我们使用它,即使它不应该。设置httpclose选项后,它始终会关闭连接,确保每个新请求都使用正确的连接。
我生命中失去了3个小时来解决这个问题。