67

/api へのすべての呼び出しを Web サービスに渡そうとしていますが、次の構成で 404 を取得し続けます。/ への呼び出しは、期待どおりに index.html を返します。誰かが理由を知っていますか?

upstream backend{
    server localhost:8080;
}

 server {

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

    location / {
        root /html/dir;
    }
}

詳細はこちら

adept@HogWarts:/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

adept@HogWarts:/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"]}
4

6 に答える 6

13

何らかの理由で、Nginx の proxy_pass は、上流に渡す前にヘッダー「Host」をカットし、リクエストはデフォルト サーバーでキャッチされ、proxy_header_pass でさえ役に立たないため、明示的に設定する必要があります。

location / {
    proxy_set_header Host $host;
    proxy_pass  http://backend;
}
于 2014-11-15T08:50:16.823 に答える
2

ポート 80 でリッスンするのを忘れていたので修正しました。

/etc/nginx/nginx.conf にある nginx 構成の「http」部分は以下のとおりです。

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


これで、http: //192.111.111.11/path1/にアクセスすると、http: //127.0.0.1
:3000/path1 / にアクセスした結果が得られます。

注:
192.111.111.11 を上記の IP アドレスに置き換えます。
「ifconfig」コマンドを実行すると、「inet addr」の部分で IP アドレスが表示されます

于 2015-08-19T05:40:31.623 に答える