【问题标题】:HAProxy cannot bind socket 80 or 443 - UbuntuHAProxy 无法绑定套接字 80 或 443 - Ubuntu
【发布时间】:2020-10-22 10:03:11
【问题描述】:

只是作为这个问题的序言——我已经尝试了通过在此处搜索找到的所有其他解决方案。所有这些都建议检查其他服务是否绑定到端口,但在我的情况下没有。其他人在讨论 SELinux,这与我运行 Ubuntu 无关

我正在尝试设置 HAProxy 以按照以下示例对 3 个 nodejs 网络服务器进行负载平衡:https://serversforhackers.com/c/load-balancing-with-haproxy

这是我的 haproxy.conf 文件:

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats timeout 30s
    user haproxy
    group haproxy
    daemon
    tune.ssl.default-dh-param 20148
    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
        ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
        ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
        ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets

defaults
    log global
    mode    http
    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 localnodes
    bind *:80
    bind *:443 ssl crt ~/cert.pem
    mode http
    default_backend nodes
    
backend nodes
    mode http
    balance roundrobin
    option forwardfor
    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }
    option httpchk HEAD / HTTP/1.1\r\nHost:localhost
    server web01 127.0.0.1:9000 check
    server web02 127.0.0.1:9001 check
    server web03 127.0.0.1:9002 check

当我运行 haproxy -f /etc/haproxy/haproxy.conf -db 我得到这个错误:

[ALERT] 295/105753 (3029) : Starting frontend localnodes: cannot bind socket [0.0.0.0:80]
[ALERT] 295/105753 (3029) : Starting frontend localnodes: cannot bind socket [0.0.0.0:443]

当我运行 netstat -anp | grep ":80" 没有返回任何东西,所以没有其他东西正在使用该端口。

【问题讨论】:

    标签: sockets port load-balancing haproxy


    【解决方案1】:

    可以试试这个

    setsebool -P haproxy_connect_any=1

    【讨论】:

    • 我试过了,不过这是 SELinux 特有的,并且没有在 Ubuntu 上安装(或与我认为兼容)。
    • 如果有任何服务正在您尝试使用的端口上运行,请尝试终止,然后重新启动 haproxy
    • 是否以root身份运行?
    • 端口上没有运行其他服务 - 也以 root 身份运行
    猜你喜欢
    • 1970-01-01
    • 2016-04-20
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多