Nginx 502 문제 조사 - proxynext_upstream
웹 애플 리 케 이 션 을 분석 한 결과 502 가 나 왔 을 때 요청 이 웹 애플 리 케 이 션 에 도착 하지 않 았 기 때문에 요청 502 가 Nginx 로 직접 되 돌아 온 것 으로 단정 할 수 있 습 니 다. Nginx 의 access. log 를 보면 해당 하 는 요청 정 보 를 찾 을 수 있 고 502 로 되 돌아 간 것 이 확실 합 니 다.
GET /api/app/1 HTTP/1.1" 502 541 17.340
Nginx error. log 로그 이상:
upstream server temporarily disabled while reading response header from upstream, client..
no live upstreams while connecting to upstream, client..
보 이 는 것 은 upstream server 가 잘못 되 었 기 때 문 입 니 다. 사용 가능 한 웹 애플 리 케 이 션 이 없어 서 이 이상 을 보 았 을 때 첫 번 째 반응 은 두 대의 웹 이 모두 끊 기 는 것 이 어 떻 습 니까??
그러나 웹 의 실행 로그 와 서비스 상태 service xx status 를 보면 502 가 발생 했 을 때 웹 애플 리 케 이 션 의 실행 은 모두 정상 적 이 고 재 부팅 되 거나 지연 되 지 않 았 기 때문에 웹 애플 리 케 이 션 문 제 를 제외 하면 이전에 다른 이상 이 있어 서 이 502 가 발생 한 것 이 아 닙 니까?502 이전 로 그 를 계속 분 석 했 습 니 다. 과연 502 이전에 500 이상 이 있 었 고 이 이상 은 빈도 가 높 았 습 니 다.
"GET /api/project HTTP/1.1" 500 214 0.087 "http://xx.com/" "Mozilla/5.0 (Win
dows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" "-" "-" xxx.net "10.x.x.x:8081, 10.x.x.x:8081" "500, 500" "0.045, 0.042"
url 분석 을 통 해 알 수 있 듯 이 이것 은 페이지 에 정기 적 인 작업 이 있 기 때문에 10 초 에 한 번 갱신 되 는 것 입 니 다. 이 api 는 bug 가 있어 서 요청 이 500 으로 돌아 갑 니 다. 그런데 500 이 왜 후속 적 인 정상 적 인 요청 을 502 로 만 들 었 는 지 이해 가 되 지 않 습 니 다. 나중에 nginx 의 nginx. conf 를 분석 한 결과 nginx 는 proxy 를 설정 하 였 습 니 다.next_upstream 속성, 이 속성 은 요청 이 뒤의 설정 상태 로 되 돌아 오 는 것 을 발견 하면 다음 upstream 으로 전 송 됩 니 다. 예 를 들 어 500.
location / {
proxy_pass http://app-proxy;
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
proxy_next_upstream_tries 3;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
proxy_pass_request_headers on;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
set $domain default;
결과 테스트 결과, 모든 인 스 턴 스 가 500 으로 돌아 가면 다음 요청 은 502 가 나타 납 니 다. 정상 적 인 api 에 접근 하면 다시 정상 으로 돌아 갑 니 다. nginx 는 upstream 이 500 인 것 을 발견 하면 모든 upstream 을 임시 disable 합 니 다. 즉, 위의 error. log 에 나타 난 'upstream server temporary disabled' 입 니 다. 후속 요청 은 'no live upstreams' 가 있 습 니 다.문 제 는 하지만 502 가 발생 하면 새로운 요청 이 재 검 측 되 고 요청 이 200 이면 정상 으로 돌아온다.
해결: 문제 의 원인 을 찾 으 면 해결 방법 도 간단 합 니 다. 이 500 은 보통 서버 측의 bug 입 니 다. 일반적인 요청 은 500 으로 돌아 가지 않 습 니 다. 문제 가 발생 하면 신속하게 해결 하면 됩 니 다. 또한 이 속성 을 사용 할 때 주의해 야 합 니 다. 만약 에 요청 이 뒤의 매 거 진 상태 라면 nginx 는 다른 upstream 으로 바로 이동 합 니 다.그래서 여러 개의 인 스 턴 스 가 요청 을 받 는 경우 가 있 습 니 다. 어떤 경우 에는 허용 되 지 않 기 때문에 사용 할 때 분석 이 필요 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux2에 nginx 설치설치 가능한 nginx를 확인하고, 해당 nginx를 설치한다. localhost 혹은 해당 ip로 접속을 하면 nginx 화면을 볼 수 있다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.