Wie kann ich Nginx korrekt proxyen?

Wie kann ich Nginx korrekt proxyen?

// EDIT: es ist mein lokaler Entwicklungsserver

Ich habe einen integrierten PHP-Server, der auf Port 8000 für den Host läuft . Ich möchte, dass Nginx von Port 80 auf Port 8000 somehost.devproxyt . Meine Konfiguration:somehost.dev

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

Fehlermeldung:

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

Was ich falsch mache?

Antwort1

Fügen Sie resolver 127.0.0.1;es Ihrer Konfiguration hinzu und ersetzen Sie 127.0.0.1 durch Ihre DNS-Server in Ihrem Setup, wenn Sie DNS nicht lokal ausführen.


Informationen zum Nginx-Resolver:

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

Konfiguriert Nameserver, die zum Auflösen der Namen von Upstream-Servern in Adressen verwendet werden, zum Beispiel:

resolver 127.0.0.1 [::1]:5353;

Eine Adresse kann als Domänenname oder IP-Adresse und optional als Port (1.3.1, 1.2.2) angegeben werden. Wenn kein Port angegeben ist, wird Port 53 verwendet. Nameserver werden im Round-Robin-Verfahren abgefragt.

Vor Version 1.1.7 konnte nur ein einziger Nameserver konfiguriert werden. Die Angabe von Nameservern über IPv6-Adressen wird ab den Versionen 1.3.1 und 1.2.2 unterstützt.

Standardmäßig sucht nginx beim Auflösen sowohl nach IPv4- als auch nach IPv6-Adressen. Wenn das Suchen nach IPv6-Adressen nicht gewünscht ist, kann der Parameter ipv6=off angegeben werden.

Die Auflösung von Namen in IPv6-Adressen wird ab Version 1.5.8 unterstützt.

Standardmäßig speichert nginx Antworten unter Verwendung des TTL-Werts einer Antwort. Ein optionaler validParameter ermöglicht das Überschreiben:

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

Vor Version 1.1.9 war die Anpassung der Caching-Zeit nicht möglich und Nginx speicherte Antworten immer für die Dauer von 5 Minuten im Cache.

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

Legt ein Timeout für die Namensauflösung fest, zum Beispiel:

resolver_timeout 5s;

verwandte Informationen