// 편집: 내 로컬 개발 서버입니다.
호스트의 포트 8000에서 실행되는 PHP 내장 서버가 있습니다 somehost.dev
. nginx가 somehost.dev
80 포트에서 8000 포트로 프록시되도록 하고 싶습니다 . 내 구성:
server {
listen 80;
server_name *.dev;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://$host:8000$uri;
proxy_redirect off;
}
}
오류 발생:
[error] 30106#0: *1 no resolver defined to resolve somehost.dev, client: 127.0.0.1, server: *.dev, request: "GET /favicon.ico HTTP/1.1", host: "somehost.dev", referrer: "http://somehost.dev/admin"
내가 뭘 잘못한 걸까요?
답변1
resolver 127.0.0.1;
로컬에서 DNS를 실행하지 않는 경우 설정에서 127.0.0.1을 DNS 서버로 대체하여 구성에 추가하세요 .
Nginx 리졸버 정보:
Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location
업스트림 서버의 이름을 주소로 확인하는 데 사용되는 이름 서버를 구성합니다. 예:
resolver 127.0.0.1 [::1]:5353;
주소는 도메인 이름이나 IP 주소 및 선택적 포트(1.3.1, 1.2.2)로 지정할 수 있습니다. 포트를 지정하지 않으면 포트 53이 사용됩니다. 네임서버는 라운드 로빈 방식으로 쿼리됩니다.
버전 1.1.7 이전에는 단일 네임서버만 구성할 수 있었습니다. IPv6 주소를 사용하여 이름 서버를 지정하는 것은 버전 1.3.1 및 1.2.2부터 지원됩니다.
기본적으로 nginx는 확인하는 동안 IPv4 및 IPv6 주소를 모두 조회합니다. IPv6 주소 조회를 원하지 않는 경우 ipv6=off 매개변수를 지정할 수 있습니다.
이름을 IPv6 주소로 확인하는 기능은 버전 1.5.8부터 지원됩니다.
기본적으로 nginx는 응답의 TTL 값을 사용하여 답변을 캐시합니다. 선택적 valid
매개변수를 사용하면 이를 재정의할 수 있습니다.
resolver 127.0.0.1 [::1]:5353 valid=30s;
버전 1.1.9 이전에는 캐싱 시간 조정이 불가능했으며 nginx는 항상 5분 동안 답변을 캐싱했습니다.
Syntax: resolver_timeout time;
Default: resolver_timeout 30s;
Context: http, server, location
이름 확인에 대한 시간 초과를 설정합니다. 예:
resolver_timeout 5s;