Https
haproxy 1.7 重定向和拒絕某些 IP
要將同一 IP 上的多個子域重定向到不同的主機,我使用的是 haproxy(1.7.5,Debian stable),它工作正常。但是,我還想通過 IP 限制對某些主機的訪問,並向被拒絕的主機顯示一條乾淨的消息(正確的 403 錯誤頁面),這就是我找不到解決方案的地方。
到目前為止,我最好的配置是使用“拒絕”後端的配置;但是我不知道如何配置這個以從瀏覽器端獲取除了 SSL 錯誤之外的任何內容。
配置如下所示:
frontend http_redirect bind *:80 redirect scheme https if !{ ssl_fc } frontend tls_router bind *:443 mode tcp option tcplog option tcpka acl demo_acl req_ssl_sni -i demo.myhost.org acl www_acl req_ssl_sni -i www.myhost.org acl demo_network_allowed src 10.1.1.0/24 use_backend demo_tls if demo_acl use_backend wwww_tls if www_acl use_backend reject_access if demo_acl !demo_network_allowed backend www_tls mode tcp option tcpka server www_srv 192.168.1.2:443 backend demo_tls mode tcp option tcpka server demo_srv 192.168.1.3:443 backend reject_access mode http # errorfile 403 /etc/haproxy/errors/403.http # server demo 192.168.1.2:443 http-request set-path www.myhost.org/403.html http-request redirect scheme https if ! { ssl_fc }
從“reject_access”後端可以清楚地看出,我嘗試了幾件事,結果相同:
$ LANG=C wget --no-check-certificate -S https://demo.myhost.org --2019-07-01 18:48:31-- https://demo.host.org/ Résolution de demo.myhost.org? 10.12.24.1 Connexion à demo.myhost.org|10.12.24.1|:443? connecté. OpenSSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol Incapable d'établir une connexion SSL.
歡迎對此配置提供任何幫助。
您不能在 tcp 模式下更改 ssl 請求的 url。您必須在 haproxy 中終止 ssl
錯誤說它無法建立 ssl 連接。拒絕後端向 443 發出 http 請求
編輯,SSL 終止範例
frontend https443 bind *:443 ssl crt someWildacrd.pem #http-request set-log-level silent #SSL is terminated, we can see URL path acl restricted_page path_beg,url_dec -i /admin http-request deny if restricted_page default_backend b_http