Nginx是否支持IPv6格式的proxy_ssl_name参数配置?
Nginx IPv6格式proxy_ssl_name配置问题解决方案
根因说明
Nginx解析地址类参数时默认会将第一个冒号后的内容识别为端口,裸写IPv6地址时自带的冒号会触发该解析逻辑,导致地址被截断。Nginx可以正确支持IPv6格式的proxy_ssl_name,你使用的1.20.1版本完全适配该能力,按规范调整写法即可解决问题。
解决方法
- 核心修复方案:用方括号包裹IPv6地址即可避免截断,示例如下:
错误写法:proxy_ssl_name 2620:128:1021:1111::11;
正确写法:proxy_ssl_name [2620:128:1021:1111::11]; - 版本适配说明:方括号包裹IPv6的规则在Nginx 1.9.1及以上版本均原生支持,无需额外升级或打补丁。
- 特殊场景适配:如果后端服务的SSL证书SAN字段为裸IPv6地址、或后端SNI校验不接受带方括号的格式,可以保留
proxy_ssl_name的方括号写法,额外添加proxy_set_header Host 2620:128:1021:1111::11;单独指定Host头即可,两者配置互不冲突。
完整配置示例
location / { # 代理目标IPv6地址同样需要用方括号包裹 proxy_pass https://[2620:128:1021:1111::11]:443; proxy_ssl_server_name on; proxy_ssl_name [2620:128:1021:1111::11]; # 按需添加裸IPv6格式的Host头 # proxy_set_header Host 2620:128:1021:1111::11; proxy_ssl_verify on; # 其余SSL配置按需补充 }
内容的提问来源于stack exchange,提问作者dakoko
相关产品推荐
相关产品推荐

