컬 오류 52 "서버에서 응답이 없습니다"는 무엇입니까?


101

다른 서버에서 호스팅되는 PHP에서 백업 스크립트를 실행하기 위해 한 서버에 크론 작업 설정이 있습니다.

내가 사용한 명령은

curl -sS http://www.example.com/backup.php

최근에 Cron이 실행될 때이 오류가 발생했습니다.

curl: (52) Empty reply from server

브라우저에서 직접 링크로 이동하면 스크립트가 제대로 실행되고 작은 백업 ZIP 파일이 생깁니다.


curl은 출력 파일 프로세서가 무엇인지 상관하지 않기 때문에 이것은 실제로 PHP와 관련이 없습니다.
Kevin Peno

1
백업 스크립트가 너무 오래 실행되어 curl시간 초과가 발생 합니까? 연결 --connect-timeout <seconds>및 전체 작업에 걸리는 기본 컬 대기를 늘려 보셨습니까 --max-time <seconds>?
Yzmir Ramirez

@YzmirRamirez curl 시간 초과 오류 코드는 28입니다. Src : ec.haxx.se/usingcurl-timeouts.html
Luckylooke

Docker + Uvicorn (FastAPI)을 사용하면 --host 0.0.0.0
TechWisdom

답변:


75

HTTPS를 수행하는 서버에서 curl이 일반 HTTP를 수행하도록 요청하면 이런 일이 발생할 수 있습니다.

예:

$ curl http://google.com:443
curl: (52) Empty reply from server

8
이것이 제 경우의 상황이었습니다. curl localhost:8443나에게 빈 답장 오류를 주었다. curl -k https://localhost:8443페이지를 제대로 게재했습니다.
lowly_junior_sysadmin nov.

1
나는 방금 이것을 우연히 만났고 누락 된 s를 완전히 놓쳤습니다. 더 명확한 오류가없는 이유가 궁금합니다 (연결이 거부 된 경우에도 마찬가지입니다. 더 의미가있을 것입니다).
ShinTakezou

45

Curl은 HTTP가 요청에 응답하지 않는 오류이므로 서버에서 응답이 없을 때이 오류를 표시합니다.

문제는 귀하와 문제의 호스트 사이에 방화벽이나 프록시와 같은 네트워크 인프라가 있다는 것입니다. 따라서이 작업을 수행하려면 해당 하드웨어를 담당하는 사람들과 문제에 대해 논의해야합니다.


19
이것은 문제 해결에 대한 잘못된 접근 방식 일 수 있습니다. 빈 응답은 IP / 포트에 연결할 수 있었지만 서버가 응답에 아무것도 반환하지 않았 음을 의미합니다. 서비스 자체의 문제 일 수 있습니다.
Robert Christian

4
글쎄요. 이것이 나에게 일어 났을 때 그것은 내 인증 프록시가 원격 호스트를 통해 연결되지 않았기 때문입니다. 따라서 실제로 서비스 자체에는 문제가 없었습니다.
Steve Knight

제 경우에는 서버가 실행중인 루프백 인터페이스에 대해 비활성화 된 프록시가 있습니다.
rbaleksandar

제 경우에는 하드 드라이브 공간이없는 NGINX 웹 캐시 서버입니다.
Alien Life Form


9

100 % CPU 또는 메모리 사용률로 인해 서버가 응답하지 않을 때 발생할 수 있습니다.

sonarqube API에 액세스하려고 할 때이 오류가 발생했는데 전체 메모리 사용률로 인해 서버가 응답하지 않았습니다.


8

응답이 비어있는 또 다른 일반적인 이유는 시간 초과입니다. cron 작업이 실행되는 위치에서 PHP / 대상 서버로의 모든 홉을 확인합니다. 예상보다 일찍 요청을 종료하는 라인 어딘가에 장치 / 서버 / nginx / LB / 프록시가있어 빈 응답이 발생합니다.


5

SSL 연결의 경우 이것은 curl 및 Safari 요청 중에 segfault하는 이전 버전의 nginx 서버 문제로 인해 발생할 수 있습니다. 이 버그 는 nginx 버전 1.10 주변에서 수정되었지만 인터넷에는 여전히 많은 이전 버전의 nginx가 있습니다.

nginx를 관리자의 경우 : 추가 ssl_session_cache shared:SSL:1m;http블록은 문제를 해결해야한다.

나는 OP가 SSL이 아닌 경우를 요구하고 있다는 것을 알고 있지만 이것이 "서버로부터 빈 응답"문제에 대한 goole의 최상위 페이지이기 때문에 나는 내 머리를 두드리는 많은 중 하나이기 때문에 여기에 SSL 답변을 남겨두고 있습니다. 이 문제로 벽에.


3

제 경우에는 PHP APC 문제로 인해 발생했습니다. 먼저 살펴볼 곳은 Apache 오류 로그입니다 (Apache를 사용하는 경우).

이것이 누군가에게 도움이되기를 바랍니다.


좀 더 설명해 주시겠습니까? APC로 인해 어떻게 발생할 수 있습니까? 나는 이것을 PHP 내에서 실행하지도 않고 단지 명령 줄을 사용하고있다.
Nino Škopac

너무 오래 전 일이어서 APC가이 문제의 원인이 된 이유를 기억할 수 없습니다. 도와 드릴 수 없어서 죄송합니다.
Andrew McCombe

2

이 오류는 서버가 데이터를 처리하는 경우에도 발생할 수 있습니다. 일반적으로 항목이 많고 레코드 생성 및 반환에 시간이 오래 걸리는 일부 파일을 REST API 웹 사이트에 게시 할 때 발생합니다.


1

이 curl -sS " http://www.example.com/backup.php "를 시도해 볼 수 있습니다. URL을 ""에 넣어서 저를 위해 일한 정확한 이유는 모르지만 URL을 " "는 서버에 대한 요청을 완료하거나 헤더 요청을 완료합니다.


1

나는 전에이 문제가 있었다. 동일한 포트 (3000)를 사용하는 다른 응용 프로그램이 있음을 알았습니다.

이것을 찾는 쉬운 방법 :

터미널에 입력하십시오 netstat -a -p TCP -n | grep 3000( '3000'대신 사용중인 포트로 대체). 둘 이상의 청취가 있으면 이미 다른 것이 해당 포트를 점유하고 있습니다. 해당 프로세스를 중지하거나 새 프로세스의 포트를 변경해야합니다.


2
이것은 당신이 언급 한 매우 특정한 경우입니다. 이것은 일반적으로 curl이이 응답을 리턴하는 이유가 아닙니다. 이 문제는 클라이언트 측이 아닌 서버 측에서 처리되어야한다는 것이 밝혀졌습니다. 이것이 내가 이해 한 곳입니다.
Aashish Chaubey

1

필자의 경우 (curl 7.47.0), content-lengthpostman이 계산 한 값으로 curl 명령에 헤더 를 수동으로 설정했기 때문입니다 (postman을 사용하여 curl 명령 매개 변수를 생성하고 쉘에 복사했습니다). header를 삭제 content-length하면 정상적으로 작동합니다.


0

이것을 시도 하십시오 -> cURL을 거치지 않고 Telnet으로 연결하려는 사이트를 ping하십시오. 연결 시도가 반환하는 응답은 연결을 시도 할 때 cURL이 보는 것과 정확히 일치합니다 (하지만 도움이되지 않게 사용자로부터 난독 화됨). 이제 여기에 표시되는 내용에 따라 몇 가지 결론 중 하나를 그릴 수 있습니다.

이름 기반 가상 호스트 인 웹 사이트에 연결하려고합니다. 즉, IP 주소를 통해 연결할 수 없습니다. 호스트 이름에 문제가 있습니다. 무언가를 잘못 입력했을 수 있습니다. 매개 변수에 POST 대신 GET을 사용하면보다 구체적인 답을 얻을 수 있습니다.

이 문제는 100-continue 헤더와 관련이있을 수도 있습니다. 을 실행 curl_getinfo($ch, CURLINFO_HTTP_CODE)하고 결과를 확인하십시오.


흥미로운 점. 실제로 응답으로 HTML을 얻을 수있었습니다 telnet hostnameGET <url>
니노 Škopac

0

제 경우는 SSL 인증서 만료로 인한 것입니다.


-1

제 경우에는 uwsgi를 사용하고 http-timeout 속성을 60 초 이상 추가했지만 약간의 추가 공간과 구성 파일이 제대로로드되지 않아 작동하지 않았습니다.


-2

Https와 같은 보안 웹 사이트에 액세스하려고 할 때 발생합니다.

나는 당신이 's'를 놓쳤기를 바랍니다

URL을 curl -sS -u "username : password" https://www.example.com/backup.php로 변경해보십시오.


3
거의 없습니다. 그리고 btw "username : password"가 https와 관련된 간단한 인증은 무엇입니까?
Nino Škopac

답변의 인증 부분은 답변에 추가하는 것이 왜 이상한지 모르는 것처럼 보입니다.
Skid Kadda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.