Назад | Перейти на главную страницу

Прокси-сервер S3 и API-шлюз за HAProxy

Я новичок в HAProxy, поэтому предположим, что в моей конфигурации несколько ошибок: weak_smile:

Я пытаюсь проксировать две части своего приложения.

gcd.abc.com/ => Amazon S3 и gcd.abc.com/api => API Gateway

Мои интерфейсы выглядят так:

frontend http-in
    bind *:80 accept-proxy
    capture request header Host len 64

    # Permanent redirect HTTP to HTTPS
    redirect scheme https code 301 if !{ ssl_fc }

frontend https-in
    bind *:443 accept-proxy ssl crt /etc/ssl/xyz.co.pem
    capture request header Host len 64

    # HTTP header Security
    http-response del-header (Server|X-AspNet-Version|X-Powered-By)

    acl gcd hdr_beg(host) -i gcd.
    acl gcd_api hdr_beg(host) -i gcd. path_beg /api # I'm fairly sure this is wrong??

    use_backend gcd-static if host_gcd
    use_backend gcd-api if gcd_api

    use_backend fia if { path_beg /service/ifm } #other stuff that works
    use_backend calendar if { path_beg /service/calendar } #more other stuff which works

И мои соответствующие бэкенды выглядят так:

backend gcd-static
    http-request set-header Host xbc.abc.co.s3-website-eu-west-1.amazonaws.com
    server gcd-static s3.eu-west-1.amazonaws.com:80 check

backend gcd-api
    http-request set-header Host foobar.execute-api.eu-west-1.amazonaws.com
    http-request set-path /gcd/%[path]
    mode http
    option forwardfor
    server gcd-api foobar.execute-api.eu-west-1.amazonaws.com:443 ssl verify none sni str(foobar.execute-api.eu-west-1.amazonaws.com)

Я должен признать, что кое-что из этого было копипастом, и я не знаю, что такое sni, и не знаю, как связать условия вместе.

Проблема в том, что я не получаю никаких данных, когда скручиваюсь вот так:

curl -H "Host gcd.xyc.com" http://my_haproxy_ip

Журнал выглядит так

Sep 26 10:45:16 ip-10-100-10-74 haproxy[10871]: 66.66.6.37:54329 [26/Sep/2019:10:45:16.866] http-in http-in/<NOSRV> 0/-1/-1/-1/0 301 105 - - LR-- 1/1/0/0/0 0/0 {gcd.xyz.com} "GET / HTTP/1.1" - - 1-5D8C96BC-5D6D0625D4390A6401CF0050