Good day! I have some problems with backend and receive 503 response from web. We used http mode by default. All incoming requests checked and forwarded to 443 ssl. But one of them (backend) not worked on http mode. It requires only tcp mode for background. Can i use frontend http and forward it ti backend with tcp mode?
HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau willy@haproxy.org
Build options :
TARGET = linux2628
CPU = generic
CC = gcc
CFLAGS = -O2 -g -fno-strict-aliasing -DTCP_USER_TIMEOUT=18
OPTIONS = USE_LINUX_TPROXY=1 USE_GETADDRINFO=1 USE_ZLIB=1 USE_REGPARM=1 USE_OPENSSL=1 USE_PCRE=1
Default settings :
maxconn = 2000, bufsize = 16384, maxrewrite = 8192, maxpollevents = 200
Encrypted password support via crypt(3): yes
Built with zlib version : 1.2.7
Compression algorithms supported : identity, deflate, gzip
Built with OpenSSL version : OpenSSL 1.0.2k-fips 26 Jan 2017
Running on OpenSSL version : OpenSSL 1.0.2k-fips 26 Jan 2017
OpenSSL library supports TLS extensions : yes
OpenSSL library supports SNI : yes
OpenSSL library supports prefer-server-ciphers : yes
Built with PCRE version : 8.32 2012-11-30
PCRE library supports JIT : no (USE_PCRE_JIT not set)
Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT IP_FREEBIND
Available polling systems :
epoll : pref=300, test result OK
poll : pref=200, test result OK
select : pref=150, test result OK
Total: 3 (3 usable), will use epoll.
global
#log 127.0.0.1 local2
log /dev/log local0 info
log /dev/log local0 notice
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
tune.ssl.default-dh-param 2048
defaults
mode http
log global
log-format {“haproxy_clientIP”:"%ci",“haproxy_clientPort”:"%cp",“haproxy_dateTime”:"%t",“haproxy_frontendNameTransport”:"%ft",“haproxy_backend”:"%b",“haproxy_serverName”:"%s",“haproxy_Tw”:"%Tw",“haproxy_Tc”:"%Tc",“haproxy_Tt”:"%Tt",“haproxy_bytesRead”:"%B",“haproxy_terminationState”:"%ts",“haproxy_actconn”:%ac,“haproxy_FrontendCurrentConn”:%fc,“haproxy_backendCurrentConn”:%bc,“haproxy_serverConcurrentConn”:%sc,“haproxy_retries”:%rc,“haproxy_srvQueue”:%sq,“haproxy_backendQueue”:%bq,“haproxy_backendSourceIP”:"%bi",“haproxy_backendSourcePort”:"%bp",“haproxy_statusCode”:"%ST",“haproxy_serverIP”:"%si",“haproxy_serverPort”:"%sp",“haproxy_frontendIP”:"%fi",“haproxy_frontendPort”:"%fp",“haproxy_capturedRequestHeaders”:"%hr",“haproxy_httpRequest”:"%r"}
option httplog
option dontlognull
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
listen stats
bind vip:8404
mode http
stats enable
stats hide-version
stats uri /stats
option httpclose
stats auth haproxy:Qazwsx!@
frontend https
bind vip:80
bind vip:443 ssl crt /etc/haproxy/ssl/cbar.cer ca-file /etc/haproxy/ssl/cbar-ca.cer crt /etc/haproxy/ssl/ecbar.cer ca-file /etc/haproxy/ssl/ecbar-ca.cer crt /etc/haproxy/ssl/bizimpullar.az.cer ca-file /etc/haproxy/ssl/bizimpullar.az-ca.cer
http-request set-header X-SSL %[ssl_fc]
http-request set-header X-SSL-Client-Verify %[ssl_c_verify]
http-request set-header X-SSL-Client-SHA1 %{+Q}[ssl_c_sha1]
http-request set-header X-SSL-Client-DN %{+Q}[ssl_c_s_dn]
http-request set-header X-SSL-Client-CN %{+Q}[ssl_c_s_dn(cn)]
http-request set-header X-SSL-Issuer %{+Q}[ssl_c_i_dn]
http-request set-header X-SSL-Client-Not-Before %{+Q}[ssl_c_notbefore]
http-request set-header X-SSL-Client-Not-After %{+Q}[ssl_c_notafter]
http-request redirect scheme https code 301 if !{ ssl_fc }
acl url_accr hdr_dom(host) -i accr.cbar.az
acl url_accr hdr_dom(host) -i www.accr.cbar.az
use_backend backend_accr if url_accr
backend backend_accr
balance roundrobin
mode http
option tcp-check
#redirect location [https://accr.cbar.az](https://accr.cbar.az/) ##!/login
cookie SERVERID insert indirect nocache
backend backend_accr
balance roundrobin
mode http
option tcp-check
cookie SERVERID insert indirect nocache
server accr-act mybackip:443 check port 443 fall 3 rise 2 ssl ca-file /etc/haproxy/ssl/cbar-ca.cer
Maybe the backend server needs SNI?
Does it work without health checks?
no it doesnt
Either your backend requires SNI, uses a certificate that cannot be authenticated with the ca file /etc/haproxy/ssl/cbar-ca.cer
or there is some other SSL related problem.
Try verify none
on the server line. If that also doesn’t work, try capturing the SSL traffic between haproxy and the backend, also make a curl -vvl https://..
request against that backend server from the haproxy instance.