Https

haproxy 1.7 重定向和拒絕某些 IP

  • July 3, 2019

要將同一 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

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