背景如下:
两台服务器需要去访问外网的https网址去获取文件,但这两台服务器无法与外界服务器通信,只能通过一台前置pop机可以访问外网。
需要在前置pop机上配置nginx去转发来自于两台服务器的http请求,将其转发为https请求,请求外网
nginx部署好后,进行外网请求,通过nginx请求日志发现,只有前两次请求成功200,后续都是504 client timed out (110: Connection timed out) while SSL handshaking for web browser on mobile device
刚开始以为是请求大量数据文件,导致读取、连接超时,调整nginx配置,增加超时时间,禁止nginx服务器写缓存。
发现nginx日志中出现大量这类日志 502 SSL handshaking
SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number) while SSL handshaking to upstream, client:......
根据反馈是短时间内连续性请求则会返回502错误,查询资料发现nginx默认会尝试重新使用SSL上游的SSL会话。
解决方式是配置文件增加:
proxy_ssl_session_reuse off;
location / {
...
...
proxy_ssl_session_reuse off;
...
...
}
完美解决了这个问题 后续日志中没有出现此类SSL handshaking日志。