- wssexternal
- listener.wss.external.mqtt_path
- listener.wss.external.acceptors
- listener.wss.external.max_connections
- listener.wss.external.max_conn_rate
- listener.wss.external.active_n
- listener.wss.external.rate_limit
- listener.wss.external.zone
- listener.wss.external.access.1
- listener.wss.external.verify_protocol_header
- listener.wss.external.proxy_address_header
- listener.wss.external.proxy_protocol
- listener.wss.external.proxy_protocol_timeout
- listener.wss.external.tls_versions
- listener.wss.external.keyfile
- listener.wss.external.certfile
- listener.wss.external.cacertfile
- listener.wss.external.dhfile
- listener.wss.external.verify
- listener.wss.external.fail_if_no_peer_cert
- listener.wss.external.ciphers
- listener.wss.external.psk_ciphers
- listener.wss.external.secure_renegotiate
- listener.wss.external.reuse_sessions
- listener.wss.external.honor_cipher_order
- listener.wss.external.peer_cert_as_username
- listener.wss.external.backlog
- listener.wss.external.send_timeout
- listener.wss.external.recbuf
- listener.wss.external.sndbuf
- listener.wss.external.buffer
- listener.wss.external.tune_buffer
- listener.wss.external.nodelay
- listener.wss.external.compress
- listener.wss.external.deflate_opts.level
- listener.wss.external.deflate_opts.mem_level
- listener.wss.external.deflate_opts.strategy
- listener.wss.external.deflate_opts.server_context_takeover
- listener.wss.external.deflate_opts.client_context_takeover
- listener.wss.external.deflate_opts.server_max_window_bits
- listener.wss.external.deflate_opts.client_max_window_bits
- listener.wss.external.idle_timeout
- listener.wss.external.max_frame_size
wssexternal
listener.wss.external
Type | Default |
---|---|
string | 0.0.0.0:8084 |
说明
配置名称为 external
的 WSS (MQTT/WebSocket/SSL) 监听器。
listener.wss.external.mqtt_path
Type | Default |
---|---|
string | /mqtt |
说明
WebSocket 的 URL Path。
listener.wss.external.acceptors
Type | Default |
---|---|
integer | 4 |
说明
监听器的接收池大小。
listener.wss.external.max_connections
Type | Default |
---|---|
integer | 16 |
说明
监听器允许的最大并发连接数量。
listener.wss.external.max_conn_rate
Type | Default |
---|---|
integer | 1000 |
说明
监听器允许的最大接入速率。单位:个/秒。
listener.wss.external.active_n
Type | Default |
---|---|
integer | 100 |
说明
监听器持续接收 TCP 报文的次数。
listener.wss.external.rate_limit
Type | Default |
---|---|
string | - |
说明
监听器的速率限制。格式为 <limit>,<duration>
。
listener.wss.external.zone
Type | Default |
---|---|
string | external |
说明
监听器所属的配置组 (Zone)。
listener.wss.external.access.1
Type | Default |
---|---|
string | allow all |
说明
监听器的 ACL 规则列表。它用于设置连接层的白/黑名单。
例如:
allow all
:表允许所有的 TCP 连接接入。 allow 192.168.0.0/24
:表允许网络地址为 192.168.0.0/24
的 TCP 连接接入。
同时,该配置可配置多条规则:
listener.wss.external.access.1 = deny 192.168.0.1
listener.wss.external.access.2 = allow all
listener.wss.external.verify_protocol_header
Type | Optional Value | Default |
---|---|---|
enum | on , off | on |
说明
是否验证 WebSocket 携带的 HTTP 头部是否正确。微信小程序需关闭该验证。
listener.wss.external.proxy_address_header
Type | Default |
---|---|
string | X-Forwarded-For |
说明
如果 EMQ X 集群部署在 HAProxy 或 Nginx,则可打开该配置获取客户端真实的 IP 地址。
listener.wss.external.proxy_protocol
Type | Optional Value | Default |
---|---|---|
enum | on , off | - |
说明
监听器是否开启 Proxy Protocol
的支持。
如果 EMQ X 集群部署在 HAProxy 或 Nginx 后,且需要拿到客户端真实的源 IP 地址与端口,则需打开此配置。
Proxy Protcol
参考:https://www.haproxy.com/blog/haproxy/proxy-protocol。
listener.wss.external.proxy_protocol_timeout
Type | Default |
---|---|
duration | - |
说明
设置 Proxy Protocol 解析的超时时间。如果该时间内没收到 Proxy Protocol 的报文,EMQ X 会关闭其连接。
listener.wss.external.tls_versions
Type | Default |
---|---|
string | tlsv1.2,tlsv1.1,tlsv1 |
说明
指定服务端支持的 SSL 的版本列表。详情请参见 http://erlang.org/doc/man/ssl.html。
listener.wss.external.keyfile
Type | Default |
---|---|
string | etc/certs/key.pem |
说明
指定 SSL 的私钥文件 (PEM)。
listener.wss.external.certfile
Type | Default |
---|---|
string | etc/certs/cert.pem |
说明
指定 SSL 的证书文件 (PEM)。
listener.wss.external.cacertfile
Type | Default |
---|---|
string | etc/certs/cacert.pem |
说明
若使用 SSL,指定 SSL 的 CA 证书文件 (PEM)。
listener.wss.external.dhfile
Type | Default |
---|---|
string | etc/certs/dh-params.pem |
说明
若使用 Ephemeral Diffie-Helman 算法,指定算法使用的 key 文件。
listener.wss.external.verify
Type | Optional Value | Default |
---|---|---|
enum | verify_peer , verify_none | verify_peer |
说明
指定握手过程中是否校验客户端。
listener.wss.external.fail_if_no_peer_cert
Type | Optional Value | Default |
---|---|---|
enum | true , false | false |
说明
SSL 握手过程中若客户端没有证书,是否让握手失败。
listener.wss.external.ciphers
Type | Default |
---|---|
string | ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-AES256-SHA384,ECDHE-RSA-AES256-SHA384,ECDHE-ECDSA-DES-CBC3-SHA,ECDH-ECDSA-AES256-GCM-SHA384,ECDH-RSA-AES256-GCM-SHA384,ECDH-ECDSA-AES256-SHA384,ECDH-RSA-AES256-SHA384,DHE-DSS-AES256-GCM-SHA384,DHE-DSS-AES256-SHA256,AES256-GCM-SHA384,AES256-SHA256,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES128-SHA256,ECDHE-RSA-AES128-SHA256,ECDH-ECDSA-AES128-GCM-SHA256,ECDH-RSA-AES128-GCM-SHA256,ECDH-ECDSA-AES128-SHA256,ECDH-RSA-AES128-SHA256,DHE-DSS-AES128-GCM-SHA256,DHE-DSS-AES128-SHA256,AES128-GCM-SHA256,AES128-SHA256,ECDHE-ECDSA-AES256-SHA,ECDHE-RSA-AES256-SHA,DHE-DSS-AES256-SHA,ECDH-ECDSA-AES256-SHA,ECDH-RSA-AES256-SHA,AES256-SHA,ECDHE-ECDSA-AES128-SHA,ECDHE-RSA-AES128-SHA,DHE-DSS-AES128-SHA,ECDH-ECDSA-AES128-SHA,ECDH-RSA-AES128-SHA,AES128-SHA |
说明
指定服务器支持的密码套件。
listener.wss.external.psk_ciphers
Type | Default |
---|---|
string | PSK-AES128-CBC-SHA,PSK-AES256-CBC-SHA,PSK-3DES-EDE-CBC-SHA,PSK-RC4-SHA |
说明
若使用 PSK 算法,指定服务端支持的 PSK Cipher 列表。注意 ‘listener.wss.external.ciphers’ 和 ‘listener.wss.external.psk_ciphers’ 只能配置一个。
listener.wss.external.secure_renegotiate
Type | Optional Value | Default |
---|---|---|
enum | on , off | off |
说明
指定在客户端不遵循 RFC 5746 的情况下,是否拒绝 renegotiation 请求。
listener.wss.external.reuse_sessions
Type | Optional Value | Default |
---|---|---|
enum | on , off | on |
说明
指定是否支持 SSL session 重用。详情见 http://erlang.org/doc/man/ssl.html。
listener.wss.external.honor_cipher_order
Type | Optional Value | Default |
---|---|---|
enum | on , off | on |
说明
指定是否使用服务端的偏好设置选择 Ciphers。
listener.wss.external.peer_cert_as_username
Type | Optional Value | Default |
---|---|---|
enum | cn , dn , crt | cn |
说明
使用客户端证书中的 CN、DN 或者 CRT 字段的值作为 MQTT CONNECT 报文中的 Username 字段的值。 注意 listener.wss.external.verify
应当设置为 verify_peer
。
listener.wss.external.backlog
Type | Default |
---|---|
integer | 1024 |
说明
TCP 连接队列的最大长度。它表明了系统中允许的正在三次握手的 TCP 连接队列最大个数。
listener.wss.external.send_timeout
Type | Default |
---|---|
duration | 15s |
说明
TCP 报文发送超时时间。
listener.wss.external.send_timeout_close
*
Type | Optional Value | Default |
---|---|---|
enum | on , off | on |
说明
TCP 报文发送超时后,是否关闭该连接。
listener.wss.external.recbuf
Type | Default |
---|---|
bytesize | - |
说明
TCP 接收缓存区大小(操作系统内核级参数)
参见:http://erlang.org/doc/man/inet.html
listener.wss.external.sndbuf
Type | Default |
---|---|
bytesize | - |
说明
TCP 发送缓存区大小(操作系统内核级参数)
参见:http://erlang.org/doc/man/inet.html
listener.wss.external.buffer
Type | Default |
---|---|
bytesize | - |
说明
TCP 缓冲区大小 (用户级)。
该值建议大于等于 sndbuff
和 recbuff
的最大值,以避免一些性能问题。在不配置的情况下,它默认等于 sndbuff 和 recbuff 的最大值
参见:http://erlang.org/doc/man/inet.html
listener.wss.external.tune_buffer
Type | Optional Value | Default |
---|---|---|
enum | on , off | - |
说明
如果打开此配置,请设置该值等于 sndbuff
与 recbuff
的最大值。
listener.wss.external.nodelay
Type | Optional Value | Default |
---|---|---|
enum | true , false | true |
说明
即 TCP_NODELAY
参数。开启该选项即允许小的 TCP 数据报文将会立即发送。
listener.wss.external.compress
Type | Optional Value | Default |
---|---|---|
enum | true , false | false |
说明
该选项若设置为 true,Websocket 消息将会被压缩。
listener.wss.external.deflate_opts.level
Type | Optional Value | Default |
---|---|---|
enum | none , default , best_compression , best_speed | default |
说明
压缩等级。
listener.wss.external.deflate_opts.mem_level
Type | Optional Value | Default |
---|---|---|
integer | 1 - 9 | - |
说明
压缩参数。内存使用限制等级,配置可开辟多少内存来参与压缩过程。
1
:最少的内存,但会降低压缩率。 9
:最多的内存,会提高计算速度和压缩率。
不配置,则默认为 8
。
listener.wss.external.deflate_opts.strategy
Type | Optional Value | Default |
---|---|---|
enum | default , filtered , huffman_only , rle | - |
说明
压缩策略,用于调优压缩率:
default
:针对普通数据。filtered
:由过滤器或预测器产生的数据,适用于分布随机性强的内容。huffman_only
:强制使用 Huffman 算法。优于filtered
。rle
:将匹配距离限制为 1 (Run-Lenght Encoding),比huffman_only
要快,但主要用于 PNG 图片。
这些策略仅影响压缩率,不会对正确性带来任何影响。
listener.wss.external.deflate_opts.server_context_takeover
Type | Optional Value | Default |
---|---|---|
enum | takeover , no_takeover | - |
说明
是否允许服务端的压缩上下文在帧之间传递。
listener.wss.external.deflate_opts.client_context_takeover
Type | Optional Value | Default |
---|---|---|
enum | takeover , no_takeover | - |
说明
是否允许客户端的压缩上下文在帧之间传递。
listener.wss.external.deflate_opts.server_max_window_bits
Type | Optional Value | Default |
---|---|---|
integer | 8 - 15 | - |
说明
服务端最大窗口值。设置一个较大的值会有更好的压缩率,但会额外的消耗内存。
listener.wss.external.deflate_opts.client_max_window_bits
Type | Optional Value | Default |
---|---|---|
integer | 8 - 15 | - |
说明
客户端最大窗口值。设置一个较大的值会有更好的压缩率,但会额外的消耗内存。
listener.wss.external.idle_timeout
Type | Default |
---|---|
duration | - |
说明
TCP 连接建立后的发呆时间,如果这段时间内未收到任何报文,则会关闭该连接。
listener.wss.external.max_frame_size
Type | Default |
---|---|
integer | - |
说明
允许的单个 MQTT 报文长度的最大值。