potato-hyun
감자현 | potato-hyun
potato-hyun
전체 방문자
오늘
어제
  • 분류 전체보기
    • Life
    • Dev
      • 코딩공부 이모저모
      • CS, 자료구조, 알고리즘
      • 코딩테스트 문제 풀이
      • 트러블슈팅, 오류해결록
    • Language
      • Javascript
    • JP
    • Learning
      • bookclub

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 비욘더로드
  • 코딩뉴비
  • 코딩 #개발자 #노마드북클럽 #노개북
  • CS50
  • 오토스케일링
  • 더현대서울
  • nodejs
  • ubutu
  • 미쓰잭슨
  • vscode
  • 부스트코스
  • 쉐도잉
  • 상태코드
  • nestjs
  • http
  • 주입
  • Beyond The Road
  • Status Code
  • ncloud
  • edwith
  • 이벤트리스너
  • 퍼블리싱
  • prettier
  • 의존성
  • node-schedule
  • 스크립트
  • beautify
  • restful api
  • 보노보노
  • 네이버클라우드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
potato-hyun

감자현 | potato-hyun

Server ) Nginx 502 Bad Gateway 에러 / nginx 설정 잘못함
Dev/코딩공부 이모저모

Server ) Nginx 502 Bad Gateway 에러 / nginx 설정 잘못함

2021. 9. 28. 00:51

전제 상황

  • Nginx 로 서브 도메인을 걸어줌
  • [ * ] 와일드 카드 ssl 인증서 발급
  • 컨테이너로 proxy_pass 해줌

 

급한 사람을 위한 미리보기

  • 버퍼 확장하기
  • proxy_pass 확인하기
  • dns cname/a 레코드 ip 주소 확인하기
  • nginx를 재시작 했는지?

 

기존 코드

server {
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name test2.servername.co.kr;

    location / {
    proxy_pass http://172.17.0.2:4000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    }
}

server {
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name test.servername.co.kr;

    location / {
    proxy_pass http://172.17.0.2:4000 ;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    }

  proxy_buffer_size          128k;
  proxy_buffers              4 256k;
  proxy_busy_buffers_size    256k;
}

 

해당 서버 인스터스는 테스트용 서버이기때문에, 백엔드 개발자가 각자 프로젝트를 테스트할 필요가 있었다.

때문에 server 객체를 두개로 만들고, server_name 으로 서브 도메인별, proxy를 걸어주었다. 이를 통해 한 서버 인스턴스에서 돌고있는 여러 도커 컨테이너로 분산시켜주었다.

 

*기존에 와일드 SSL 인증서를 발급했기 때문에 같은 경로에 있는 인증서를 불러왔다. 와일드 인증서가 아니라 각각 따로 발급받은 경우 경로를 잘 확인해야한다.

그러나 새로 붙여준 [ test.test.co.kr ] 에 들어가면 다음과 같이 502 bad gateway 오류가 떴다.

클라이언트 오류를 확인해본 결과, 서버 인스턴스 ip로 잘 찾아가 지나, strict-origin-when-cross-origin 에러가 헤더에 있는것을 볼 수 있었다.

 

1. 버퍼 확장하기

Nginx에서 요청을 받고, 서브도메인을 처리하는 시간 즉 버퍼가 부족해 생긴오류가 대다수라고 한다. 때문에 location 안에 buffer를 추가하는 코드를 넣어두었다.

*나의 경우 다른 개발자가 location이 아니라 엄한 곳에 buffer 확장 코드를 넣어 에러가 발생했다.

server {
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name test.servername.co.kr;

    location / {
    	proxy_pass http://172.17.0.2:4000 ;
    	proxy_set_header Host $host;
    	proxy_set_header X-Real-IP $remote_addr;

        # location 안에 넣어줘야함
      	proxy_buffer_size          128k;
      	proxy_buffers              4 256k;
      	proxy_busy_buffers_size    256k;
    }
}

 

2. proxy_pass 확인하기

엄한곳으로 proxy 보낸것이 아닌지 잘 확인하자.

*나의 경우 다른 개발자가 proxy 경로를 잘못 적어 502 오류가 발생했다.

buffer 확장 코드 안넣어줘도 에러 해결이 되었음

server {
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name test.servername.co.kr;

    location / {
    	proxy_pass http://localhost:100 ;
        proxy_set_header Host $host;
    	proxy_set_header X-Real-IP $remote_addr;
    }
}

 

3. dns cname/a 레코드 ip 주소 확인하기

서브도메인을 세팅하려면 cname이나 a레코드를 추가해 설정을해주어야한다. 혹시나 자기가 dns 설정할때 다른 오류가 없었는지 확인하자.

 

4. nginx를 재시작 했는지?

터무니없는 말 같지만, 정말 일어나는 일이다. 사람인지라 까먹고 restart 안하는 경우가 있기마련...

꼭 restart를 해 코드 최신화를 유지하자...!

# ngnix 오류 테스트 - syntax is ok
sudo nginx -t
# nginx 번경사항 업데이트 (재시작)
sudo service nginx restart

 

 

참고자료

  • strict-origin-when-cross-origin 관련
    • Chrome의 기본 레퍼러 정책 변화 - strict-origin-when-cross-origin (2020.07 / Chrome v.85)
    • 크롬 브라우저 Referer-Policy 기본 정책 변화 알아보기
  • nginx 502 에러 관련
    • NGINX Proxy 502 Bad Gateway 오류 해결하기 ~ upstream sent too big header while reading response header from upstream | 두글 블로그
    • NGINX Reverse Proxy and Access-Control-Allow-Origin issue
  • 버퍼란?
    • (Term) 버퍼(Buffer)란?
    • [개념정리] 버퍼(Buffer)란? 버퍼 개념
    • 간단히 말하자면, 임시 저장공간! 임시 저장 → 나중에 한꺼번에 cpu 처리
저작자표시 (새창열림)

'Dev > 코딩공부 이모저모' 카테고리의 다른 글

Server ) RESTful API, 자주 사용하는 Status code 정리 및 예시  (0) 2021.10.04
Server ) Api Http status code에 대하여, header와 통일시켜야할까 body에만 담아야 할까?  (0) 2021.10.03
로직 ) 로그인, 메일 인증  (0) 2021.09.25
CS ) ssh, sh, bash 란 뭘까?  (0) 2021.09.25
CS) 서버 OS 알아보기, CentOS, Linux, Ubuntu, Window  (0) 2021.09.05
    'Dev/코딩공부 이모저모' 카테고리의 다른 글
    • Server ) RESTful API, 자주 사용하는 Status code 정리 및 예시
    • Server ) Api Http status code에 대하여, header와 통일시켜야할까 body에만 담아야 할까?
    • 로직 ) 로그인, 메일 인증
    • CS ) ssh, sh, bash 란 뭘까?
    potato-hyun
    potato-hyun
    말하는 감자

    티스토리툴바