Nginx routet nicht entsprechend meinen benutzerdefinierten Regeln

Nginx routet nicht entsprechend meinen benutzerdefinierten Regeln

Problem: Nginx leitet den Datenverkehr nicht basierend auf der Regel weiter, die ich in einer separaten Konfigurationsdatei definiert habe, und zeigt nur die Standardantwort 404 an.

Kontext: Ich habe eine kleine Middleware-Anwendung in Go geschrieben, die eine einfache Antwort auf GET-Anfragen bietet. Die Anwendung wird auf Port 8080 bereitgestellt:

$ curl localhost:8080
ok

Ich möchte eine Nginx-Konfiguration schreiben, die es mir ermöglicht, Anrufe weiterzuleiten von/APIZulokaler Host: 8080, was mir Folgendes ermöglichen würde

$ curl localhost/api
ok

Um dies zu erreichen, habe ich die folgende Konfiguration geschrieben:

/etc/nginx/sites-available/benutzerdefinierte-nginx-regeln

server {
    listen 80;

    location /api {
        proxy_pass http://localhost:8080;
    }
}

Ich habe auch einen Softlink erstellt in/etc/nginx/sites-enabled/für die obige Datei

$ ls -l /etc/nginx/sites-enabled
total 0
lrwxrwxrwx 1 root root 34 Jan 19 16:42 default -> /etc/nginx/sites-available/default
lrwxrwxrwx 1 root root 32 Feb 20 14:56 custom-nginx-rules -> /etc/nginx/sites-available/custom-nginx-rules

Der Rest des Setups ist Vanilla Nginx, es wird nichts geändert. Trotz dieses einfachen Setups erhalte ich eine 404, wenn ich den folgenden Aufruf tätige:

$ curl localhost/api
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.10.3</center>
</body>
</html>

Andere Information: Folgendes sind die auf meinem System installierten Nginx-Pakete (läuft auf Raspberry Pi)

$ dpkg -l | grep nginx

ii  libnginx-mod-http-auth-pam      1.10.3-1+deb9u1              armhf        PAM authentication module for Nginx
ii  libnginx-mod-http-dav-ext       1.10.3-1+deb9u1              armhf        WebDAV missing commands support for Nginx
ii  libnginx-mod-http-echo          1.10.3-1+deb9u1              armhf        Bring echo and more shell style goodies to Nginx 
ii  libnginx-mod-http-geoip         1.10.3-1+deb9u1              armhf        GeoIP HTTP module for Nginx
ii  libnginx-mod-http-image-filter  1.10.3-1+deb9u1              armhf        HTTP image filter module for Nginx
ii  libnginx-mod-http-subs-filter   1.10.3-1+deb9u1              armhf        Substitution filter module for Nginx
ii  libnginx-mod-http-upstream-fair 1.10.3-1+deb9u1              armhf        Nginx Upstream Fair Proxy Load Balancer
ii  libnginx-mod-http-xslt-filter   1.10.3-1+deb9u1              armhf        XSLT Transformation module for Nginx
ii  libnginx-mod-mail               1.10.3-1+deb9u1              armhf        Mail module for Nginx
ii  libnginx-mod-stream             1.10.3-1+deb9u1              armhf        Stream module for Nginx
ii  nginx                           1.10.3-1+deb9u1              all          small, powerful, scalable web/proxy server
ii  nginx-common                    1.10.3-1+deb9u1              all          small, powerful, scalable web/proxy server - common files
ii  nginx-full                      1.10.3-1+deb9u1              armhf        nginx web/proxy server (standard version)

Ich verlange außerdem, dass dieses Setup unabhängig von Host- oder Servernamen ist. Das Routing sollte unabhängig vom Host erfolgen.

Durch Ausführen des nginx -TBefehls wird bestätigt, dass die Dateien geladen sind. Das Fehlerprotokoll ist ebenfalls leer.

Antwort1

defaultEntfernen Sie den symbolischen Link /etc/nginx/sites-enabledund starten Sie nginx neu.

Andernfalls defaultwird diese Konfiguration verwendet, um die Anfrage zu bedienen, bevor custom-nginx-rulessie

verwandte Informationen