Logging

Pound、HAproxy 和 HAproxy 日誌記錄

  • March 12, 2013

我試圖弄清楚關於 HAproxy 日誌記錄的一件事。基本上,我們讓 Pound 在同一主機上的 HAproxy 前面執行,執行 SSL 終止,然後將請求傳遞給 HAproxy。我想弄清楚的是如何將 CLIENT 的 IP 記錄到 HAproxy 日誌中。目前,無論我做什麼,我都會將以下內容登錄到 HAproxy 日誌中:

Feb 27 19:37:00 localhost.localdomain haproxy[17365]: 127.0.0.1:44880 [27/Feb/2013:19:36:59.786] ssl_application ssl_application/app01 0/0/0/385/386 200 3470 - - ---- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

我知道 127.0.0.1 是 Pound 代理對 HAproxy 的請求的 IP,但我想知道是否有任何方法可以讓實際的客戶端 IP 登錄到 HAproxy 日誌中。

磅配置如下所示:

User        "www-data"
Group       "www-data"

LogLevel   3
LogFacility local2

TimeOut 60

# poundctl control socket
Control "/var/run/pound/poundctl.socket"

ListenHTTPS
   Address 0.0.0.0
   Port    443
   Cert    "/etc/pound/ssl/certificate.pem"

   # Allow PUT and DELETE also (by default only GET, POST and HEAD)?:
   xHTTP        1

   Service
       BackEnd
           Address 127.0.0.1
           Port    8080
       End
   End
End

HA 代理配置如下所示:

global
       log 127.0.0.1   local0 info
       log 127.0.0.1   local1 notice
       maxconn 4096
       user haproxy
       group haproxy
       stats socket /var/run/haproxy.sock

defaults
       log     global
       mode    http
       option  httplog
       option  dontlognull
       retries 3
       redispatch
       maxconn 2000
       contimeout      5000
       clitimeout      50000
       srvtimeout      50000
       option httpclose
       option forwardfor

# Set up application listeners here.
listen application 0.0.0.0:80
 acl health_check path_beg /health_check
 block if health_check
 option httpchk HEAD /health_check HTTP/1.1\r\nHost:\ staging.example.com
 balance roundrobin
 server app01 10.178.64.113:8000 weight 1 maxconn 100 check

listen ssl_application 0.0.0.0:8080
 acl health_check path_beg /health_check
 block if health_check
 option httpchk HEAD /health_check HTTP/1.1\r\nHost:\ staging.example.com
 balance roundrobin
 server app01 10.178.64.113:4430 weight 1 maxconn 100 check

listen admin 0.0.0.0:22002
 mode http
 stats uri /

任何建議將不勝感激!客戶端的 IP 必須隱藏在某處,因為它正在登錄到 HAproxy 後面的 Nginx。只需弄清楚如何將其記錄到 HAproxy 日誌中即可。

CMIIW,我從不使用 Pound,但如果您確定 Pound 能夠傳遞 http 標頭 x-forwarded-for,您只需在 HAproxy 偵聽部分添加“擷取請求標頭 x-forwarded-for len 15”(http:// code.google.com/p/haproxy-docs/wiki/capture_request_header)並確保還包括“選項 httplog”。

除了已經提到的 X-Forwarded-For 之外,您還可以使用 Tproxy 使整個事情變得透明:

http://blog.loadbalancer.org/transparent-proxy-of-ssl-traffic-using-pound-to-haproxy-backend-patch-and-howto/

這將需要 2 個子網,並且很難完成。

引用自:https://serverfault.com/questions/483168