Amazon web services 指向nginx时,Cloud Front返回502错误
是否有人对cloud front和错误502有问题 我的设置相当简单。我只想在云前端后面的一个实例上运行一个nginx服务器 服务器很好,该网站在浏览器中运行良好,并从ssllabs.com获得a,但当我使用xxxxxxxx.cloudfront.net域访问云前端时,返回502错误。 当我将我的域指向云前端的CNAME时,也会发生同样的情况 从我所读到的内容来看,这与证书有关,但我找不到任何解决方案,在CF日志中缺少任何细节也无济于事 nginx-VAmazon web services 指向nginx时,Cloud Front返回502错误,amazon-web-services,nginx,ssl-certificate,amazon-cloudfront,Amazon Web Services,Nginx,Ssl Certificate,Amazon Cloudfront,是否有人对cloud front和错误502有问题 我的设置相当简单。我只想在云前端后面的一个实例上运行一个nginx服务器 服务器很好,该网站在浏览器中运行良好,并从ssllabs.com获得a,但当我使用xxxxxxxx.cloudfront.net域访问云前端时,返回502错误。 当我将我的域指向云前端的CNAME时,也会发生同样的情况 从我所读到的内容来看,这与证书有关,但我找不到任何解决方案,在CF日志中缺少任何细节也无济于事 nginx-V nginx version: nginx/
nginx version: nginx/1.14.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
yum列表已安装| grep-i nginx
nginx.x86_64 1:1.14.1-2.34.amzn1 @amzn-updates
ldd哪个nginx | grep ssl
libssl.so.10 => /lib64/libssl.so.10 (0x00007f057b5bc000)
openssl.x86_64 1:1.0.2k-16.150.amzn1 @amzn-updates
yum列表已安装| grep-i openssl
libssl.so.10 => /lib64/libssl.so.10 (0x00007f057b5bc000)
openssl.x86_64 1:1.0.2k-16.150.amzn1 @amzn-updates
NGINX部分配置:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# Certificates
ssl_certificate /etc/ssl/cert.crt;
ssl_certificate_key /etc/ssl/key.key;
# Ciphers
# ssl_protocols TLSv1.2 TLSv1.3; #All protocols other than TLS 1.2 and TLS 1.3 are considered unsafe.
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
# Diffie-Hellman parameter for DHE ciphersuites
ssl_dhparam /etc/ssl/dhparam.pem;
server_tokens off;
云前端出现以下错误:
x-edge-location - DUB2-C1
cs-method - GET
cs-uri-stem - /
sc-status - 502
x-edge-result-type - Error
cs-protocol - https
ssl-protocol - TLSv1.2
ssl-cipher - ECDHE-RSA-AES128-GCM-SHA256
x-edge-response-result-type - Error
cs-protocol-version - HTTP/2.0
ssl密码在NGINX中配置
证书链是正确的,由sslchecker检查并使用openssl s_客户端
链:
Common name: *.mydomain.com
Common name: COMODO RSA Domain Validation Secure Server CA
Common name: COMODO RSA Certification Authority
云前端配置有:
Delivery Method - Web
SSL Certificate - mydomain.com
Custom SSL Client Support - Clients that Support Server Name Indication (SNI) - (Recommended)
Security Policy - TLSv1.2_2018
Supported HTTP Versions - HTTP/2, HTTP/1.1, HTTP/1.0
IPv6 Disabled
Default Root Object -
Minimum Origin SSL Protocol - TLSv1
Origin Protocol Policy - Match Viewer
Viewer Protocol Policy - Redirect HTTP to HTTPS
当我将另一个云前端指向我的Distance服务器时,也发生了同样的事情,该服务器在SSLLAB上获得了A+,但使用docker部署,我没有在那里更改任何nginx配置
来自nginx的Error.log
2019/09/16 15:34:33 [debug] 10863#0: *109 SSL_do_handshake: -1
2019/09/16 15:34:33 [debug] 10863#0: *109 SSL_get_error: 2
2019/09/16 15:34:33 [debug] 10863#0: *109 reusable connection: 0
2019/09/16 15:34:33 [debug] 10863#0: *109 SSL handshake handler: 0
2019/09/16 15:34:33 [debug] 10863#0: *109 SSL_do_handshake: 1
2019/09/16 15:34:33 [debug] 10863#0: *109 SSL: TLSv1.2, cipher: "ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD"
当我执行
yum检查更新时,列表上会出现nginx或ssl。如果您使用dzczcexample.CloudFront.net主机名访问CloudFront,并且您已将缓存行为配置为白名单中的所有头或白名单中会出现Host
头,那么从设计上看,它不起作用,并且您会得到一个502。这是否描述了您的配置?我使用以下设置:HTTP方法-GET、HEAD(默认缓存)、基于选定请求头的缓存-无(改进缓存)、对象缓存-使用原始缓存头、最小TTL-0、最大TTL-31536000、默认TTL-86400。看起来应该可以正常工作。您能提供用于源域名的值吗?您好,很遗憾,我无法提供该值,但如果您向我发送要针对该域运行的命令,我将向您发送结果。源域名是我的ec2实例的公共DNS名称,即.*.REGION.compute.amazonaws.com。我刚刚使用了Postman,向它发送了一个带有正确主机头的请求,并得到了正确的响应。好吧,问题出在这里。您说过“证书链是正确的,由sslchecker检查并使用openssl s_客户端”,但如果您使用的是xxxx.compute.amazonaws.com
hostname,则这一点并不正确——您需要在sslchecker中进行测试,因为您的证书上没有这一点,我相信您会意识到它会失败。在这种情况下,CloudFront会称为foul,因为您的计算机没有与源域名匹配的证书。源域名必须是something.example.com
与EC2上的证书匹配。这有意义吗?