문제 원인

이 문제는 domain을 찾지 못해서 발생합니다.
naver.com을 가리킬수도 있지만, docker의 경우 컨테이너 이름을 가리킬수도 있지요.
저는 fileb라는 컨테이너를 가리키는 nginx conf 파일에서 문제가 발생했습니다.
host not found in upstream "fileb"
이런 문제가 발생하며 nginx가 실행이 불가능했습니다.

찾은 해결 방안

이 오류 문구로 검색하면 한가지 해결 방안이 나옵니다.
다음의 코드처럼 resolver와 set을 이용하면 해결이 된다고 합니다.

아래의 코드에 resolver와 set을 추가하라고 합니다.

proxy_pass http://fileb;

해당 글에 따르면 이렇게 바꾸라고 하죠.

        resolver 127.0.0.11 valid=30s;
        resolver_timeout 10s;

        set $upstream http://fileb;
        proxy_pass $upstream;

resolver와 set에 대해 알아보죠

resolver

resolver는 보자마자 이해가 가는 기능이죠?
맞습니다. DNS 서버를 설정하는 명령어라고 합니다.
LINK: nginx document: http core module: resolver
http, server, location에 사용할 수 있죠.

set

set도 보면 이해가 가죠?
변수를 설정합니다.
set [$변수이름] [변수에 넣을 내용]로 사용합니다.

첫 시도: 실패

그래서 전 변수는 이용 안하기로 했습니다.

        resolver 127.0.0.11 valid=30s;
        resolver_timeout 10s;

        proxy_pass http://fileb;

변수는 기껏 해봐야 글자 입력한 순서가 변경될 뿐이잖아요?
근데 왜 전 안될까? 하고 몇시간이나 삽질 했는데…
변수를 이용하니까 됩니다.

성공 값

        resolver 127.0.0.11 valid=30s;
        resolver_timeout 10s;

        set $upstream http://fileb;
        proxy_pass $upstream;

set을 사용하고 resolver를 사용 안해도 안됩니다.
그러면 set과 resolver가 포함되어야 proxy pass할 때 resolver가 사용된다는 것인데…
잘 모르겠습니다.ㅠㅠ
왜 변수를 이용해야 resolver가 사용되는지..

그냥 같은 문제 겪으시면 꼭 둘 다 넣으세요.ㅎㅎ

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


Ads Blocker Image Powered by Code Help Pro

광고 차단 감지됨!

닫기를 누르면 이용하실 수 있지만, 광고 차단은 해제해주시면 좋겠습니다.
Powered By
100% Free SEO Tools - Tool Kits PRO