代理 haproxy 或 Web 服务器无法呈现内容

代理 haproxy 或 Web 服务器无法呈现内容

我尝试设置一个用作haproxy代理服务器的基本基础设施。

这是我的基本环境

域名:示例.com

代理服务器

  • 操作系统:Linux Ubuntu 16.04
  • 软件:haproxy服务器
  • IP:100.100.100.101

代理配置文件:已添加/配置这两个部分

frontend http-frontend
        bind 100.100.100.101:80
        reqadd X-Forwarded-Proto:\ http
        default_backend webserver

backend webserver
        server 1-www 100.100.100.102:80 check
        #server 2-www private_ip_2:80 check # use for load balance

网络服务器

  • 操作系统:Debian Jessie 8.7
  • 软件:Nginx/PHP-FPM/MySQL
  • IP:100.100.100.102

DNS指向我的代理 IP:100.100.100.101

Type A 100.100.100.101
CNAME example.com

观察: 当在浏览器中调用域名时,重定向会毫无问题地发生,但不会下载来自 Web 服务器的内容(我收到无法连接的错误)。我已在我的 Web 服务器 IP:100.100.100.102 上安装了 Let's Encrypt,也许这是导致问题的原因?此外,在我的 nginx 配置文件中,我创建了一条规则,以防用户忘记使用 https://,从而从 HTTP 重定向到 HTTPS。

我的疑问是,我是否应该在我的代理或 Web 服务器中安装 Let's Encrypt(实际安装)?

谢谢。

[已编辑] 毕竟,这就是我的 haproxy 配置文件的样子,对于那些感兴趣的人来说,它在我的环境中运行。

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private

        # Default ciphers to use on SSL-enabled listening sockets.
        # For more information, see ciphers(1SSL). This list is from:
        #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
        ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
        ssl-default-bind-options no-sslv3
        maxconn 2048
        tune.ssl.default-dh-param 2048

defaults
        log     global
        mode    http
        option  forwardfor
        option  http-server-close
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

frontend www-http
        bind 100.100.100.101:80
        reqadd X-Forwarded-Proto:\ http
        default_backend wwwbackend

frontend www-https
        bind 100.100.100.101:443 ssl crt /etc/haproxy/certs/mydomain.tld.pem
        reqadd X-Forwarded-Proto:\ https
        acl letsencrypt-acl path_beg /.well-known/acme-challenge/
        use_backend letsencrypt-backend if letsencrypt-acl
        default_backend wwwbackend

backend wwwbackend
        redirect scheme https if !{ ssl_fc }
        server mamba 100.100.100.102:80 check
        server taipan 100.100.100.103:80 check
        server viper 100.100.100.104:80 check
        server cobra 100.100.100.105:80 check

backend letsencrypt-backend
        server letsencrypt 127.0.0.1:22222

答案1

您正在将用户重定向到 HTTPS,而您的haproxy配置缺少 HTTPS 配置。您需要配置您的haproxy以侦听端口 443 并将请求传递到您的nginx后端。您还需要在上面安装您的 Let's Encrypt 证书haproxy

相关内容