문제 원인
이 문제는 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가 사용되는지..
그냥 같은 문제 겪으시면 꼭 둘 다 넣으세요.ㅎㅎ
답글 남기기