이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 9418|회답: 0

[웹] Nginx의 리졸버를 사용해 동적 업스트림을 구현하세요

[링크 복사]
게시됨 2019. 7. 27. 오후 10:23:00 | | |
최근 제 업무에서 이 부분이 필요해졌습니다. 업스트림은 완전히 동적이며 클라이언트가 지정하고, 초반에 몇 가지 오류가 있으며, 마지막으로 DNS 서비스는 리졸버를 통해 지정됩니다. 구체적인 절차는 다음과 같습니다.

1. 구덩이를 밟기 시작하세요

nginx의 구성은 다음과 같습니다:

이런 요청을 보낼 때:


다음과 같은 오류가 보고되었습니다:

access.log:
127.0.0.1 - - [2017년 9월 14일:23:37:10 +0800] "GET / HTTP/1.1" 502 179 "-" "curl/7.29.0"

error.log:
2017/09/14 23:38:31 [오류] 25307#25307: *48 해결할 리졸버가 정의되어 있지 않음www.baidu.com, 클라이언트: 127.0.0.1, 서버: localhost, 요청: "GET / HTTP/1.1", 호스트: "127.0.0.1:8001"
이 문제는 리졸버를 지정하지 않으면 사용자 정의 upstreamwww.baidu.com 이 발생한다는 점을 명시하고 있습니다.

2. 리졸버를 사용하여 도메인 이름 해상도를 정의합니다

수정된 nginx 구성은 다음과 같습니다:

이제 요청 횟수는 정상 200개입니다:

req:
curl "127.0.0.1:8001/" -H "업스트림-호스트:www.baidu.com" -보아
curl "127.0.0.1:8001/" -H "업스트림-호스트:www.qq.com" -보아

access.log:
127.0.0.1 - - [2017년 9월 14일:23:44:01 +0800] "GET / HTTP/1.1" 200 2381 "-" "curl/7.29.0"
127.0.0.1 - - [2017년 9월 14일:23:44:07 +0800] "GET / HTTP/1.1" 200 244182 "-" "curl/7.29.0"
3. 리졸버 명령어

리졸버의 문법은 다음과 같습니다:

Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default:    —
Context:    http, server, location
여러 DNS 서비스를 구성할 수 있고, nginx는 폴링을 사용해 DNS 서비스에 접근하고, nginx는 DNS 도메인 이름 해석 결과를 캐시하며, 캐시 시간은 유효 상태에서 지정되고, IPv6는 IPv6를 켜거나 끄는 데 사용됩니다.

resolver_timeout DNS 해석을 위한 타임아웃을 지정하는 데 사용됩니다.





이전의:개인용 FTP 구축 소프트웨어를 공유하세요
다음:Alibaba Cloud OSS Nginx 리버스 프록시 구성
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com