Distribuție CloudFront cu originea ELB HTTP 502 (Bad Gateway) (Administrarea sistemului, Amazon Web Services)

Martin Ahrer a intrebat.

Am o distribuție CloudFront conectată cu o origine ELB personalizată (cu instanță EC2). Atunci când se execută o cerere curl https://xxx.cloudfront.net/atlassian-connect.json a HTTP/1.1 502 Bad Gateway răspuns este returnat.

HTTP/1.1 502 Bad Gateway
Content-Type: text/html
Content-Length: 587
Connection: keep-alive
Server: CloudFront
Date: Sun, 29 May 2016 14:32:18 GMT
Age: 23
X-Cache: Error from cloudfront
Via: 1.1 fb7ff691963d3e3600808dccbe4422d2.cloudfront.net (CloudFront)
X-Amz-Cf-Id: HymCU2TweM0e6O4bDhluvDOj0gd2BoAqCnDtVyTOZBz2wOIYHN-Qhg==

Atunci când trimit o cerere (ocolind distribuția CloudFront) direct la ELB, reușesc să obțin răspunsul așteptat:

curl  -kv https://xxx.eu-central-1.elb.amazonaws.com/atlassian-connect.json

După ce am încercat să modific unele dintre opțiunile de distribuție CloudFront, nu reușesc să fac să funcționeze.

Comentarii

  • Adresa -k din comanda dvs. cURL este îngrijorătoare. Funcționează fără asta? Dacă SSL nu este valid, CloudFront nu se va conecta. –  > Por ceejayoz.
  • Ai nimerit-o, ca de obicei, @ceejayoz. –  > Por Michael – sqlbot.
  • Pentru mine, problema a fost că certificatul pentru ELB era incorect (era un certificat personalizat, dar URL-ul de origine pentru CloudFront era propriul DNS AWS: something124124.eu-west-1.elb.amazonaws.com –  > Por Maksim Luzik.
1 răspunsuri
Michael – sqlbot

Certificatul SSL de pe serverul dvs. nu este utilizabil în această configurație.

Ocoliți validarea cu curl, dar CloudFront (destul de sensibil) nu oferă un astfel de mecanism de ocolire.

Certificatul dvs. trebuie să se potrivească fie numele de gazdă de origine fie Host: din cererea originală, dacă aveți opțiunea Host: antetul este trecut pe lista albă pentru a fi redirecționat către origine.

Dacă certificatul dvs. nu conține niciun nume de domeniu care să se potrivească fie cu numele de domeniu de origine, fie cu numele de domeniu din antetul Host, CloudFront returnează un cod de stare HTTP 502 (Bad Gateway) către vizualizator.

…și, trebuie să fie actual, valabil, să nu fie auto-semnat, cu un lanț de încredere construit corespunzător:

Dacă serverul de origine returnează un certificat expirat, un certificat invalid sau un certificat autofirmat, sau dacă serverul de origine returnează lanțul de certificate într-o ordine greșită, CloudFront întrerupe conexiunea TCP, returnează codul de eroare HTTP 502 și setează antetul X-Cache la Error from cloudfront.

Citatele provin din http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/SecureConnections.html.

Comentarii

  • Antetele nu au fost transmise împreună cu cererea. Așadar, în cazul în care Host: a lipsit din cerere, iar cererea a eșuat. –  > Por Martin Ahrer.
  • Nu-mi vine să cred că mi-a luat prea mult timp să aflu că certificatul era problema. Sunt upvoting acest lucru, sperăm că va face la primele rezultate ale Google. –  > Por AntonioOtero.