I've found what seems to be a bug when I log from within a Lua sample fetch that I am using to determine a redirect URL. It seems that whatever is logged from the lua script is written to the log file as expected, but it also is replacing the response, making the response invalid and breaking the redirection.
Thanks, Jesse Here's what I'm seeing: *no logging: curl -v http://lab.mysite.com <http://lab.mysite.com>* > GET / HTTP/1.1 > Host: lab.mysite.com > User-Agent: curl/7.51.0 > Accept: */* > < HTTP/1.1 302 Found < Cache-Control: no-cache < Content-length: 0 < Location: https://www.google.com/ < Connection: close < *issue seen here with logging the string "LOG MSG" from lua script: curl -v http://lab.mysite.com/log <http://lab.mysite.com/log>* > GET /log HTTP/1.1 > Host: lab.mysite.com > User-Agent: curl/7.51.0 > Accept: */* > LOG MSG 302 Found Cache-Control: no-cache Content-length: 0 Location: https://www.google.com/log Connection: close Here are steps to reproduce and my current setup: */etc/redhat-release:* CentOS Linux release 7.2.1511 (Core) *uname -rv* 3.10.0-327.28.3.el7.x86_64 #1 SMP Thu Aug 18 19:05:49 UTC 2016 *haproxy -vv:* HA-Proxy version 1.7.2 2017/01/13 Copyright 2000-2017 Willy Tarreau <[email protected]> Build options : TARGET = linux2628 CPU = generic CC = gcc CFLAGS = -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement OPTIONS = USE_LINUX_TPROXY=1 USE_ZLIB=1 USE_REGPARM=1 USE_OPENSSL=1 USE_LUA=1 USE_PCRE=1 Default settings : maxconn = 2000, bufsize = 16384, maxrewrite = 1024, maxpollevents = 200 Encrypted password support via crypt(3): yes Built with zlib version : 1.2.7 Running on zlib version : 1.2.7 Compression algorithms supported : identity("identity"), deflate("deflate"), raw-deflate("deflate"), gzip("gzip") Built with OpenSSL version : OpenSSL 1.0.1e-fips 11 Feb 2013 Running on OpenSSL version : OpenSSL 1.0.1e-fips 11 Feb 2013 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 Running on PCRE version : 8.32 2012-11-30 PCRE library supports JIT : no (USE_PCRE_JIT not set) Built with Lua version : Lua 5.3.3 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. Available filters : [COMP] compression [TRACE] trace [SPOE] spoe *haproxy.cfg:* global log 127.0.0.1 local2 debug lua-load /etc/haproxy/lua/redirect.lua chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 256 tune.ssl.default-dh-param 1024 stats socket /var/run/haproxy.sock mode 600 level admin stats timeout 2m #Wait up to 2 minutes for input user haproxy group haproxy daemon defaults log global mode tcp option tcplog option dontlognull timeout connect 10s timeout client 60s timeout server 60s timeout tunnel 600s frontend http bind "${BIND_IP}:80" mode http option httplog option forwardfor capture request header Host len 32 log-format %hr\ %r\ %ST\ %b/%s\ %ci:%cp\ %B\ %Tr http-request redirect prefix "%[lua.get_redirect()]" *lua/redirect.lua:* core.register_fetches("get_redirect", function(txn) local path = txn.sf:path() if (path == "/log") then core.Info("LOG MSG") end return "https://www.google.com" end)

