
Ich habe die Haproxy LTS 2.2-Version aus dem Quellcode mit diesem Befehl kompiliert:
make TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_CRYPT_H=1 USE_LIBCRYPT=1
Beim Kompilieren ist kein Fehler aufgetreten. Dies ist meine Haproxy-Konfiguration:
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
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
frontend http-in
bind 192.168.123.40:80
acl gerrit hdr(host) -i gerrit.example.local
acl jenkins hdr(host) -i jenkins.example.local
use_backend gerrit if gerrit
use_backend jenkins if jenkins
backend gerrit
server gerrit 127.0.0.1:8080
backend jenkins
server jenkins 127.0.0.1:8081
Wenn ich die Konfiguration mit dem Befehl überprüfe, haproxy -c -q -V -f /etc/haproxy/haproxy.cfg
erhalte ich folgenden Fehler:
[NOTICE] 226/130914 (35193) : haproxy version is 2.2.2
[NOTICE] 226/130914 (35193) : path to executable is /usr/sbin/haproxy
[ALERT] 226/130914 (35193) : parsing [/etc/haproxy/haproxy.cfg:33] : unknown keyword 'bind 192.168.123.40:80' in 'frontend' section
[ALERT] 226/130914 (35193) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg
[ALERT] 226/130914 (35193) : Fatal errors found in configuration.
Ich habe die Dokumentation überprüft und es ist erlaubt, bind
Schlüsselwörter im Frontend-Bereich zu verwendenhttp://cbonte.github.io/haproxy-dconv/2.2/configuration.html#bind (Alphabetisch sortierte Schlüsselwortreferenz)
Noch mehr Mindfuck wird erreicht, wenn ich das Schlüsselwort im Frontend-Bereich auskommentiere bind
. Dann wird der Fehler angezeigt:
[WARNING] 226/132456 (36642) : config : frontend 'http-in' has no 'bind' directive. Please declare it as a backend if this was intended.
Antwort1
bind
Dies sieht so aus, als hätten Sie zwischen und ein anderes Leerzeichen verwendet, das wie ein Leerzeichen aussieht, aber kein normales Leerzeichen ist 192.168.123.40:80
. Versuchen Sie, den Text erneut einzugeben, aber verwenden Sie dieses Mal ein normales Leerzeichen (U+0020, ASCII 32).