http认证开启listener.ssl.external.proxy_protocol = on后,证书信息丢失name和subject,显示为undefined

使用的是nginx负载,没有用HAProxy

环境

  • EMQX 版本:4.2.5开源版本
  • 操作系统版本:其他

重现此问题的步骤

1 emqx的emqx_auth_http.conf配置了param参数
auth.http.auth_req.params = clientId=%c,username=%u,password=%P,proto_name=%r,certCn=%C,certSubject=%d,clientIp=%a,serverPort=%p

2.nginx 加上了proxy_protocol on; 配置

upstream mqtt_out8883 {
hash $remote_addr consistent;
server 192.168.0.8:8883 weight=1 max_fails=5 fail_timeout=30s;
server 192.168.0.15:8883 weight=1 max_fails=5 fail_timeout=30s;
}

server {
listen 8883;
proxy_protocol on;
proxy_connect_timeout 5s;
proxy_timeout 360s;
proxy_pass mqtt_out8883;
access_log /mnt/data/nginx/logs/mqtt_out8883.log proxy;
}
3. emqx修改了配置:listener.ssl.external.proxy protocol = on
4. 使用证书访问,得到了真实IP,但是证书信息丢失了

预期行为

能拿到真实IP和证书信息

实际行为

得到了真实IP,但是证书信息丢失了

你好,Proxy 那里开启了 proxy_protocol 吗?

开启了。

nginx貌似不能透传这些信息,haproxy可以check-send-proxy send-proxy-v2-ssl-cn

nginx不开启这个proxy_protocol on ,EQMX也不配置 listener.ssl.external.proxy protocol = on,
这样是可以拿到证书信息的,只不过拿不到真实IP了