Как правильно проксировать nginx?

Как правильно проксировать nginx?

// EDIT: это мой локальный сервер разработки

У меня есть встроенный сервер PHP, работающий на порту 8000 для хоста 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;в свою конфигурацию, заменив 127.0.0.1 на ваш DNS-сервер(ы) в вашей настройке, если вы не используете 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;

Связанный контент