“SSL 接收到一个超出最大准许长度的记录。” 错误代码“ssl_error_rx_record_too_long”说明少了“ssl on;”...

Nginx实现根据域名http、https分发配置示例

2014年10月10日 - 如果提示“SSL 接收到一个超出最大准许长度的记录。” 错误代码“ssl_error_rx_record_too_long”说明少了“ssl on;”这一行. 后面的server.crt server.key是数字证书,具体可以参照openssl做证书

server {
listen 443;
server_name mail.huozhe.com;ssl on;
ssl_certificate server.crt;
ssl_certificate_key server.key;location / {
proxy_pass https://192.168.0.2:443;
proxy_set_header Host $host:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";

}


server {
listen 80;
server_name svn.huozhe.com;location / {
proxy_pass https://192.168.0.2:443;
proxy_set_header Host $host:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via “nginx”;
proxy_set_header X-Forwarded-Proto https; #注意看这里 多了一行
}
}
SSL 错误 `ssl_error_rx_record_too_long` 通常表示客户端在尝试建立 HTTPS 连接时,接收到的 SSL/TLS 记录长度超过了协议规定的最大值(通常是 16KB)。该问题可能源于服务器端配置不当,也可能由客户端与服务器之间的中间设备(如反向代理或负载均衡器)处理不当引起。 ### 常见原因及解决方案 #### 1. Nginx 配置错误 在 Nginx 中,如果 HTTPS 站点配置中同时使用了 `listen 443 ssl;` 和 `ssl on;` 指令,会导致冲突,从而引发此错误。正确的做法是只使用其中一个配置方式。如果使用了 `listen 443 ssl;`,则不需要再添加 `ssl on;` [^2]。 示例正确配置: ```nginx server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/server.crt; ssl_certificate_key /path/to/server.key; location / { proxy_pass https://backend_server; } } ``` #### 2. SSL 配置指令 在某些 Nginx 版本中,如果未显式启用 SSL,也会导致浏览器无法正确解析服务器响应。此时应确保配置中包含 `ssl on;`,并确保监听端口与 SSL 配置匹配 [^3]。 示例配置: ```nginx server { listen 443; server_name mail.huozhe.com; ssl on; ssl_certificate server.crt; ssl_certificate_key server.key; location / { proxy_pass https://192.168.0.2:443; proxy_set_header Host $host:443; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Via "nginx"; } } ``` #### 3. 服务器未正确配置 SSL/TLS 握手 当服务器未正确配置 SSL/TLS 握手流程时,客户端无法识别服务器返回的数据格式,从而导致记录长度异常。这种情况下,需要检查服务器证书、私钥是否匹配,以及 SSL 协议和加密套件的配置是否合理 [^1]。 #### 4. 中间设备干扰 某些反向代理、负载均衡器或 SSL 终端设备可能在处理 SSL 流量时引入错误。例如,代理设备可能错误地修改了 SSL 记录的结构,导致客户端无法解析。可以通过直接访问后端服务器来确认是否为中间设备问题。 #### 5. 客户端问题 尽管较见,但某些浏览器或客户端库(如 Firefox)对 SSL 记录长度的限制较为严格,可能在处理大记录时触发此错误。可以尝试使用其他浏览器或更新客户端库版本进行测试。 ### 排查建议 - 使用 `openssl s_client -connect yourserver:443` 检查 SSL 握手过程。 - 查看 Nginx 或服务器日志,确认是否存在 SSL 配置警告或错误。 - 使用 Wireshark 或 tcpdump 抓包分析 SSL 握手过程,确认记录长度是否异常。 - 确保使用的 SSL 证书格式正确,且未过期。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值