#redirect #haproxy
Вопрос:
Я использую Haproxy версии 2.4
Мне нужно перенаправить URL https
Я сделал это в nginx, но мне это нужно в haproxy
https://1.1.1.1/partner/transparent => https://2.2.2.2/my.FrontEnd.ServiceProvider2/partner/transparent
https://1.1.1.1/status => https://2.2.2.2/my.FrontEnd.ServiceProvider2/status
Параметры тоже должны быть переданы
Пример
https://1.1.1.1/partner/transparent?partner_id=1111amp;service_id=1111amp;order_id=111111111amp;amount=10amp;phonenumber=111111111amp;signature=ZyVvUoM7GpzW44HXbi2DG+UHNCk=amp;way=mobile
запрос
https://2.2.2.2/my.FrontEnd.ServiceProvider2/partner/transparent?partner_id=1111amp;service_id=1111amp;order_id=111111111amp;amount=12amp;phonenumber=111111111amp;signature=ZyVvUoM7GvzW44HXbi2DG+UHNCk=amp;way=mobile
как мне сделать перенаправление?
Я перепробовал множество вариантов, но у меня ничего не вышло
frontend IN
bind *:443 ssl crt /etc/haproxy/ssl/cert.pem
mode http
option httplog
acl host_status path_beg /status
http-request redirect code 301 prefix https://2.2.2.2 if { path_beg /status }
#location /my.FrontEnd.ServiceProvider2/status if { path_beg /status }
#http-request redirect code 301 location http://%[hdr(host)] unless host_status
#http-request set-path %[url,regsub(^/status,/https://2.2.2.2/my.FrontEnd.ServiceProvider/status,)] if { path_beg /status }
#replace-header ^(.*)$ /my.FrontEnd.ServiceProvider2/status
#####
#http-request redirect prefix https://2.2.2.2/partner/transparent code 301 if { hdr(host) -i host_partner }
#http-request redirect code 301 prefix /status if host_status
#
#http-request redirect code 301 prefix https://1.1.1.1/partner/transparent if host_partner acl host_partner path_beg /partner/transparent
http-request redirect code 301 prefix https://2.2.2.2/my.FrontEnd.ServiceProvider2 if host_partner
#location /my.FrontEnd.ServiceProvider2/partner/transparent if host_partner
use_backend status if host_status
use_backend partner if host_partner
#===========================backend======================#
backend status
mode http
#reqrep ^(.*)$
#option forwardfor
http-request redirect location https://2.2.2.2/my.FrontEnd.ServiceProvider2/status
#http-request redirect code 301 location http://%[hdr(host)]%[url,regsub(^/status, /my.FrontEnd.ServiceProvider2/status,)] if { path_beg /status }
#http-request replace-value Location ^https://1.1.1.1/status(.*)$ https://2.2.2.2/my.FrontEnd.ServiceProvider2/status1
#server status 2.2.2.2:443
backend partner
mode http
#option forwardfor
http-request redirect location https://2.2.2.2/my.FrontEnd.ServiceProvider2/partner/transparent
Комментарии:
1. это работает, но параметры не передаются как передать параметры?
reqrep ^/partner/(.*)$ 3 if host_partner use_backend partner if host_partner backend partner mode http http-request redirect location https://2.2.2.2/my.FrontEnd.ServiceProvider2/partner/transparent
2. это сработало для меня
acl host_status path_beg /status http-request redirect code 301 location %[url,regsub(^/status,https://2.2.2.2/my.FrontEnd.ServiceProvider2/status,)] if { path_beg /status }