1

これを重複としてマークする前に、私自身のケースを読んでください。他のケースとは少し異なります。

同じドメインの下に置きたい複数のnode.jsエンドポイントを開発しています。

これらのサービスは、次のようなものに応答します。

  • /user/:user_id/authorization-承認サービスのベースパス
  • /user/:user_id/log-ログサービスのベースパス

等々。

最初の部分/user/:user_id/はすべてのサービスで同じです。これは、Authenticationヘッダーを使用する代わりに、パス内でユーザーIDを渡すRESTの方法にすぎません。

同じベースパスを使用しているため、これらのWebサービスにNGINXをリバースプロキシする方法はありますか?

別の質問:コンテンツのキャッシュにNGINXが使用されていない場合、リバースプロキシの場合、node.jsのパフォーマンスをダウングレードできますか(たとえば、パフォーマンスがnode.jsよりも悪い場合)?

4

2 に答える 2

3

nginx を使用すると、必要なルーティングを行うことができます。開始点としてここを参照してください: http://nginx.org/en/docs/http/request_processing.htmlおよびhttp://nginx.org/r/location


別の質問: NGINX がコンテンツのキャッシュに使用されていない場合、リバース プロキシを使用している場合、node.js のパフォーマンスを下げることができますか (たとえば、パフォーマンスが node.js よりも悪い場合)。

静的ファイルを提供するためのnode.js自体またはnginxフロントエンド?

参照: http://www.aosabook.org/en/nginx.html

于 2012-11-15T17:35:31.530 に答える
0

あなたの質問を明確に理解している場合は、次のようなものが必要です。

server {
    listen              80;
    server_name default;
    root                /var/www/;

    access_log  /var/log/nginx/access.log combined;
    error_log   /var/log/nginx/error.log error;

    location / {
        if (-f $request_filename) {
                access_log      off;
                expires         30d;
                break;
        }
        error_log       off;
        error_page 404  = @node;
    }

    location @node {
        if ($uri ~ "/user/(.*)/authorization") { proxy_pass     http://127.0.0.1:8080; } #authorization service
        if ($uri ~ "/user/(.*)/log")           { proxy_pass     http://127.0.0.1:8081; } #log service

        proxy_next_upstream     error timeout http_500 http_502 http_503 http_504;
        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_ignore_headers    X-Accel-Expires Expires Cache-Control;
    }
}
于 2012-11-15T15:44:03.970 に答える