¿Cómo hago proxy de nginx correctamente?

¿Cómo hago proxy de nginx correctamente?

// EDITAR: es mi servidor de desarrollo local

Tengo un servidor PHP integrado ejecutándose en el puerto 8000 para el host somehost.dev. Quiero que nginx actúe como proxy somehost.devdesde el puerto 80 al 8000. Mi configuración:

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

Obteniendo error:

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

¿Qué hice mal?

Respuesta1

Agregue resolver 127.0.0.1;a su configuración, reemplazando 127.0.0.1 con su(s) servidor(es) DNS en su configuración si no está ejecutando DNS localmente.


Información del solucionador de Nginx:

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

Configura servidores de nombres utilizados para resolver nombres de servidores ascendentes en direcciones, por ejemplo:

resolver 127.0.0.1 [::1]:5353;

Se puede especificar una dirección como un nombre de dominio o dirección IP y un puerto opcional (1.3.1, 1.2.2). Si no se especifica el puerto, se utiliza el puerto 53. Los servidores de nombres se consultan por turnos.

Antes de la versión 1.1.7, solo se podía configurar un único servidor de nombres. Se admite la especificación de servidores de nombres utilizando direcciones IPv6 a partir de las versiones 1.3.1 y 1.2.2.

De forma predeterminada, nginx buscará direcciones IPv4 e IPv6 mientras resuelve. Si no desea buscar direcciones IPv6, se puede especificar el parámetro ipv6=off.

La resolución de nombres en direcciones IPv6 se admite a partir de la versión 1.5.8.

De forma predeterminada, nginx almacena en caché las respuestas utilizando el valor TTL de una respuesta. Un validparámetro opcional permite anularlo:

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

Antes de la versión 1.1.9, no era posible ajustar el tiempo de almacenamiento en caché y nginx siempre almacenaba en caché las respuestas durante 5 minutos.

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

Establece un tiempo de espera para la resolución de nombres, por ejemplo:

resolver_timeout 5s;

información relacionada