MASALAH
Saya tidak dapat melihat remote-ip asli datang dari luar, ketika saya menggunakan SSL-Termination di HAProxy dan memaksa HTTPS. Jika saya tidak memaksa pengalihan HTTP ke HTTPS, saya dapat melihat dari nginx-logs bahwa send-proxy sebenarnya berfungsi dengan HTTP. Saya juga dapat melihat hal yang sama dari HAProxy-logs.
TEORI
Jika saya menghapus semua cookie situs, menonaktifkan pengalihan, dan membuka versi HTTP, HAProxy akan menampilkan remote-ip dengan benar. Setelah mengalihkan pengalihan ke HTTPS dan membuka situs HTTP yang sama, log pertama-tama akan menampilkan koneksi dari remote-ip ke backend:
176.93.182.162:49300 [14/Feb/2020:23:40:30.254] 80_443_frontend 80_443_frontend/(NOSRV)
dan kemudian koneksi dari localhost (127.0.0.1):
127.0.0.1:35304 [14/Feb/2020:23:40:30.776] 80_443_frontend~ 80_443_backend/git 0/0/0/1/1 200
KESIMPULAN
Pikiran saya adalah, HAProxy akan mengarahkan lalu lintas internal dari 443 kembali ke port 80 menuju backend, dan pada saat yang sama mengalihkan IP header ke IP-nya sendiri. Semoga ada yang punya ide.
HAProxy ada di dalam wadah lxdnya sendiri, begitu pula NGINX!! Jika ini mengubah sesuatu?
Ini adalah konfigurasi di HAProxy:
frontend 80_443_frontend bind *:80 bind *:443 ssl crt /etc/ssl/git.domain.org/git.domain.org.pem alpn h2,http/1.1 redirect scheme https code 301 if !{ ssl_fc } timeout client 1m option forwardfor option http-server-close acl letsencrypt-acl path_beg /.well-known/acme-challenge/ use_backend letsencrypt_backend if letsencrypt-acl acl git_host hdr(host) -i git.domain.org use_backend 80_443_backend if git_host backend letsencrypt_backend server letsencrypt 127.0.0.1:8888 backend 80_443_backend http-request set-header X-Client-IP %[src] server git git.lxd:80 send-proxy