#apache #haproxy
#apache #haproxy
Вопрос:
Я настроил haproxy перенаправлять путь «/rawman» на порт 8080 на моем сервере. Это работает в первый раз, но как только я захожу на сайт по умолчанию, он перестает работать. Сайт по умолчанию запущен в apache с mod_rewrite и он перехватывает недопустимые запросы (используя 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
Ответ №1:
Попробуйте установить значение option httpclose
после srvtimeout
строки.
Если вы этого не сделаете, то haproxy использует настройку keepalive целевого сервера. Как только вы посещаете основной сайт, соединение открывается и остается открытым, и при вашем следующем запросе haproxy выдает о, разве это не здорово: у меня открытое соединение. Давайте просто используем его, даже если это не должно. При установленном параметре httpclose соединение всегда закрывается, гарантируя, что каждый новый запрос использует правильное соединение.
Потерял 3 часа своей жизни, выясняя это.
Комментарии:
1. о, потрясающе! Я пытался заставить это работать весь день, спасибо!!
2. Я потерял дни на это. Большое вам спасибо. Должно быть, это ошибка HAProxy.
3. За это вас следует наградить медалью. Этот ответ должен быть принят!