haproxy 1.7 重定向并拒绝某些 IP

haproxy 1.7 重定向并拒绝某些 IP

为了将同一 IP 上的多个子域重定向到不同的主机,我使用了 haproxy(1.7.5,Debian 稳定版),效果很好。不过,我还想通过 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.

欢迎对此配置提供任何帮助。

答案1

您无法在 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

相关内容