Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 指向nginx时,Cloud Front返回502错误_Amazon Web Services_Nginx_Ssl Certificate_Amazon Cloudfront - Fatal编程技术网

Amazon web services 指向nginx时,Cloud Front返回502错误

Amazon 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/

是否有人对cloud front和错误502有问题

我的设置相当简单。我只想在云前端后面的一个实例上运行一个nginx服务器

服务器很好,该网站在浏览器中运行良好,并从ssllabs.com获得a,但当我使用xxxxxxxx.cloudfront.net域访问云前端时,返回502错误。 当我将我的域指向云前端的CNAME时,也会发生同样的情况

从我所读到的内容来看,这与证书有关,但我找不到任何解决方案,在CF日志中缺少任何细节也无济于事

nginx-V

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上的证书匹配。这有意义吗?