Haproxy
Openshift + HAproxy 503 自定義頁面
我正在使用 503 HTTP 狀態和即將推出的維護模式頁面。
有沒有辦法讓 HAproxy 服務於伺服器端生成的 503 頁面而不是預設的空白/不可用頁面?
我正在使用 Openshift + HAproxy + Cloudflare + PHP。
提前致謝。
Haproxy 配置(刪除了一些評論):
#--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- 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 #--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- 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 #--------------------------------------------------------------------- # main frontend which proxys to the backends #--------------------------------------------------------------------- frontend main *:5000 acl url_static path_beg -i /static /images /javascript /stylesheets acl url_static path_end -i .jpg .gif .png .css .js use_backend static if url_static default_backend app #--------------------------------------------------------------------- # static backend for serving up images, stylesheets and such #--------------------------------------------------------------------- backend static balance roundrobin server static 127.0.0.1:4331 check #--------------------------------------------------------------------- # round robin balancing between the various backends #--------------------------------------------------------------------- backend app balance roundrobin server app1 127.0.0.1:5001 check server app2 127.0.0.1:5002 check server app3 127.0.0.1:5003 check server app4 127.0.0.1:5004 check
有沒有辦法讓 HAproxy 服務於伺服器端生成的 503 頁面而不是預設的空白/不可用頁面?
這不是你應該問的實際問題。HAProxy 總是使用伺服器的響應。錯誤文件僅用於HAProxy內部生成的錯誤。
如果您檢查您的 Web 伺服器日誌,您會發現這些特定請求實際上並未發送到 Web 伺服器。
發生這種情況是因為 HAProxy 認為您的伺服器已關閉……因為它從伺服器獲取 503 以響應執行狀況檢查。
如果伺服器在執行狀況檢查中返回 502 或 400 或任何錯誤程式碼,您仍會從 HAProxg 收到 503,因為伺服器已正式關閉。
WARNING] 201/142518 (192371) : Server express/local-gear is DOWN, reason: Layer7 wrong status, code: 503, info: "HTTP status check returned code <3C>503<3E>", check duration: 87ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue
您顯然已經
option httpchk
從您發布的配置中編輯了該行,但它必須存在,否則 HAProxy 只會進行第 4 層檢查,而這不會發生。最簡單的解決方案是從後端或預設配置中刪除該行。