「http response add-header」機能を使用して haproxy に新しいヘッダーを追加できます。Wireshark を使用すると、追加されたヘッダーが http パケットに表示されるため、正常に完了しています。
問題は、それらをキャプチャできないことです。「応答ヘッダーのキャプチャ」機能を使用すると、「Content-Type」や「Connection」などの一般的なヘッダーをキャプチャしてログに記録できますが、追加されたヘッダーでは機能しません。
これは私の設定ファイル haproxy.cfg です:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
option http-server-close
timeout http-request 5000
timeout connect 5000
timeout client 50000
timeout server 50000
frontend localnodes
bind 10.0.0.16:80
mode http
# Table definition
stick-table type ip size 100k expire 30s store conn_cur
tcp-request connection track-sc1 src
capture response header X-Test-One len 10
capture response header X-Test-Two len 10
capture response header Content-Type len 10
capture response header Connection len 10
default_backend nodes
backend nodes
mode http
balance roundrobin
http-response add-header X-Test-One %Ts
http-response add-header X-Test-Two %T
server web01 123.123.22.22:2222 check maxconn 500
listen stats *:1936
stats enable
stats uri /
stats hide-version
stats auth notthelogin:notthepassword
また、http リクエストを行うと、ログ ファイルに次の内容が記録されます。
Oct 7 11:12:38 localhost haproxy[20304]: 10.0.0.20:34316 [07/Oct /2015:11:12:38.972] localnodes nodes/web01 0/0/0/1/1 200 11378 - - ---- 14/14/0/0/0 0/0 {||text/html|close} "GET / HTTP/1.0"
ログでは、「{||text/html|close}」で標準ヘッダーは適切にキャプチャされていますが、「|」の間にある空白の 2 つの追加ヘッダーはキャプチャされていないことが明確にわかります。ただし、Wireshark で確認できるように、これらは http パケット内にあります。
カスタムヘッダーを表示するWiresharkのスクリーンショット
誰か助けてくれる人はいませんか?何が問題なのかわからず、2日間もこの状態が続いています :/
ありがとう :)