Como faço para corrigir o proxy nginx?

Como faço para corrigir o proxy nginx?

// EDIT: é meu servidor de desenvolvimento local

Eu tenho um servidor PHP integrado em execução na porta 8000 para host somehost.dev. Quero que o nginx faça proxy somehost.devda porta 80 para 8000. Minha configuração:

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;
    }
}

Obtendo erro:

[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"

O que eu faço de errado?

Responder1

Adicione resolver 127.0.0.1;à sua configuração, substituindo 127.0.0.1 pelo(s) seu(s) servidor(es) DNS na sua configuração se você não estiver executando o DNS localmente.


Informações do resolvedor Nginx:

Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location

Configura servidores de nomes usados ​​para resolver nomes de servidores upstream em endereços, por exemplo:

resolver 127.0.0.1 [::1]:5353;

Um endereço pode ser especificado como um nome de domínio ou endereço IP e uma porta opcional (1.3.1, 1.2.2). Se a porta não for especificada, a porta 53 será usada. Os servidores de nomes são consultados em rodízio.

Antes da versão 1.1.7, apenas um único servidor de nomes podia ser configurado. A especificação de servidores de nomes usando endereços IPv6 é suportada a partir das versões 1.3.1 e 1.2.2.

Por padrão, o nginx procurará endereços IPv4 e IPv6 durante a resolução. Se a procura de endereços IPv6 não for desejada, o parâmetro ipv6=off poderá ser especificado.

A resolução de nomes em endereços IPv6 é suportada a partir da versão 1.5.8.

Por padrão, o nginx armazena em cache as respostas usando o valor TTL de uma resposta. Um parâmetro opcional validpermite substituí-lo:

resolver 127.0.0.1 [::1]:5353 valid=30s;

Antes da versão 1.1.9, o ajuste do tempo de cache não era possível e o nginx sempre armazenava respostas em cache por 5 minutos.

Syntax: resolver_timeout time;
Default: resolver_timeout 30s;
Context: http, server, location

Define um tempo limite para resolução de nomes, por exemplo:

resolver_timeout 5s;

informação relacionada