- 总结问题
我努力强制 haproxy 使用 ssl 和 websockets
- 描述你尝试过的事情
我有2台机器。首先安装了带有 haproxy 和letsencrypt 插件的opnSense。我将它配置为代理我的 www 应用程序并且它可以工作,但我坚持使用代理 websockets,我不知道问题出在哪里。
当我在本地连接到 websocket 时,没有 SSL 和 HaProxy,直接连接到 websocket 服务器就可以了,所以我认为应用程序没有问题。
- 给我看代码
这是从 haproxy 插件导出的配置
#
# Automatically generated configuration.
# Do not edit this file manually.
#
global
uid 80
gid 80
chroot /var/haproxy
daemon
stats socket /var/run/haproxy.socket group proxy mode 775 level admin
nbproc 1
nbthread 1
tune.ssl.default-dh-param 1024
spread-checks 0
tune.chksize 16384
tune.bufsize 16384
tune.lua.maxmem 0
log /var/run/log local0 info
defaults
log global
option redispatch -1
timeout client 30s
timeout connect 30s
timeout server 30s
retries 3
default-server init-addr last,libc
# autogenerated entries for ACLs
# autogenerated entries for config in backends/frontends
# autogenerated entries for stats
# Frontend: wss-public_IPv4 ()
frontend wss-public_IPv4
bind public_IPv4:6001 name public_IPv4:6001 ssl force-tlsv12 prefer-client-ciphers ssl-min-ver TLSv1.2 ssl-max-ver TLSv1.3 ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256 ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 crt-list /tmp/haproxy/ssl/6172c72c8e3541.08699115.certlist
mode tcp
default_backend projectName-pool
# tuning options
timeout client 30s
# logging options
# ACL: projectName_com
acl acl_616b1c7bcccc34.08330571 hdr(host) -i projectName.com
# ACL: is_Websocket-Upgrade
acl acl_6173e262251329.31528714 hdr(Upgrade) -i websocket
# ACTION: projectName_com_wss_rule
use_backend projectName-pool-wss if acl_616b1c7bcccc34.08330571 acl_6173e262251329.31528714
# Backend: projectName-pool ()
backend projectName-pool
# health checking is DISABLED
mode http
balance source
# stickiness
stick-table type ip size 50k expire 30m
stick on src
# tuning options
timeout connect 30s
timeout server 30s
http-reuse safe
server docker-projectName 10.0.248.4:80
# Backend: projectName-pool-wss ()
backend projectName-pool-wss
# health checking is DISABLED
mode http
balance source
# stickiness
stick-table type ip size 50k expire 30m
stick on src
# tuning options
timeout connect 30s
timeout server 30s
http-reuse safe
server docker-projectName-wss 10.0.248.4:6001