Использование haproxy версии 1.4.24 в Ubuntu 14.04
Я хотел бы использовать haproxy для перезаписи и перенаправления недействительных URL-адресов на их новый эквивалент. Я уже использую haproxy в качестве обратного прокси и балансировщика нагрузки. У меня перезапись работает правильно, но когда я пытаюсь перенаправить, я либо получаю перенаправление без перенаправления, либо в цикле перенаправления. Я читал в нескольких местах, что метод для этого состоит в том, чтобы переписать и перенаправить URL-адрес с использованием префикса в интерфейсе, но мне не повезло. Любая помощь будет оценена. Спасибо.
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
user haproxy
group haproxy
spread-checks 0
defaults
log global
mode http
option httplog
option dontlognull
retries 3
timeout queue 20000
timeout client 50000
timeout connect 5000
timeout server 50000
frontend haproxy-0-80
bind 0.0.0.0:80
default_backend haproxy_service
acl old_url path_beg -i /post
# The below doesn't appear to have any effect
reqrep ^([^\ :]*)\ /post/\d+/(.+)/? \1\ /\2
redirect prefix http://10.0.3.10 code 301 if old_url
backend haproxy_service
balance leastconn
cookie SRVNAME insert
# The below properly handles the rewrite
reqrep ^([^\ :]*)\ /post/\d+/(.+)/? \1\ /\2
server ghost-0-2368 10.0.3.220:2368 maxconn 100 cookie S0 check
Как оказалось, я был очень близок к рабочему конфигу.
Изменение строки перенаправления на чтение redirect prefix / code 301 if old_url
заставил его работать, как ожидалось.
Я написал сообщение в блоге, в котором проблема описана более подробно: https://fromanegg.com/post/2014/12/05/how-to-rewrite-and-redirect-with-haproxy/