cloudfront遇到的502问题

less than 1 minute read

配置完一个saas用户之后,遇到了一个问题,绑定CLB访问没有问题;

绑定Cloudfront之后就报502 (Bad Gateway);

按照aws的文档提示,An HTTP 502 status code (Bad Gateway) indicates that CloudFront wasn’t able to serve the requested object because it couldn’t connect to the origin server.官方文档给出了下面6种可能性:

因为绑定CLB访问没有问题,所以怀疑SSL证书上存在问题,之前出现过证书链不完整,导致不同的浏览器认为证书是不安全的;

分别用openssl s_client去判断源站和Cloudfront上的证书

openssl s_client -connect xxxx.elb.amazonaws.com:443 -servername www.xxx.com

发现两个的不同点,Verify return code: 21 (unable to verify the first certificate),经过仔细排查发现是因为源站的证书链不完整导致的;补充完整之后就ok了。

没过几天有发现这个站的websocket连接不上,也报502;开始的时候没有联想到上次的事情。

通过排查cloudfront的日志和nginx的日志,发现请求没有发到nginx上,到cloudfront直接就返回502了,因此问题再cloudfront上,这个时候想起来上次的问题,通过将wss://ws.xxx.com更换成https://ws.xxx.com就可以很清楚的看到返回的详细错误了。

检查发现上次修改证书链的时候,只把www改了,没有改ws等。