it-swarm.com.de

Nginx proxy_pass 404 Fehler, verstehe nicht warum

Ich versuche, alle Aufrufe von/api an meinen Webservice weiterzuleiten, erhalte aber weiterhin 404s mit der folgenden Konfiguration. Ruft erwartungsgemäß/return index.html auf. Weiß jemand warum?

upstream backend{
    server localhost:8080;
}

 server {

    location /api {
        proxy_pass http://backend;
    }

    location / {
        root /html/dir;
    }
}

Mehr Infos hier

[email protected]:/etc/nginx/sites-available$ curl -i localhost/api/authentication/check/user/email
HTTP/1.1 404 Not Found
Server: nginx/1.2.1
Date: Mon, 22 Apr 2013 22:49:03 GMT
Content-Length: 0
Connection: keep-alive

[email protected]:/etc/nginx/sites-available$ curl -i localhost:8080/authentication/check/user/email
HTTP/1.1 200 OK
Content-Type: application/json
Date: Mon, 22 Apr 2013 22:49:20 GMT
Transfer-Encoding: chunked

{"user":["false"],"emailAddress":["false"]}
29
Roge

Dies

location /api {
    proxy_pass http://backend;
}

Muss das sein

location /api/ {
    proxy_pass http://backend/;
}
73
Roge

Aus irgendeinem Grund schneidet proxy_pass in Nginx 1.6.2 den Header "Host" ab, bevor er an den Upstream übergeben wird, und fordert standardmäßig Fänge an. Auch proxy_header_pass hilft nicht. Deshalb muss es explizit festgelegt werden:

location / {
    proxy_set_header Host $Host;
    proxy_pass  http://backend;
}
10
Oleg Neumyvakin

Ich habe vergessen, PORT 80 anzuhören, habe es behoben.

Der "http" Teil von nginx config, unter: /etc/nginx/nginx.conf, ist unten:

http {
    server {
        listen 192.111.111.11:80;
        location /path1/ {
            proxy_pass http://127.0.0.1:3000/path1/
        }
    }
}

Jetzt zugreifen
http://192.111.111.11/path1/
wird das Ergebnis des Zugriffs erhalten
http://127.0.0.1:3000/path1/

HINWEIS:
Ersetzen Sie die 192.111.111.11 durch Ihre IP-Adresse in der obigen Tabelle.
Führen Sie den Befehl "ifconfig" aus. Der Teil "inet addr" gibt Ihre IP-Adresse an