0

2 つの Ghost ブログ サイトにリバース プロキシ サービスを提供するために使用する NGINX サーバーがあります。node静的コンテンツの場合、サービスをスキップして、NGINX から直接提供されるようにしたいと考えています。かなり簡単なはずですが、ひねりがあります。

以下は、リバース プロキシを設定し、静的コンテンツの例外を提供する構成ブロックです。これは問題なく動作します (注: 二重括弧で囲まれた参照は、使用している 2 つの異なる Ghost サービスの名前に置き換えられています)。

location / {
    proxy_redirect off;
    proxy_set_header    X-Real-IP           $remote_addr;
    proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto   $scheme;
    proxy_set_header    Host                $http_host:$server_port;
    proxy_set_header    X-NginX-Proxy       true;
    proxy_set_header    Connection          "";
    proxy_http_version  1.1;
    proxy_cache         ghost_{{slug}}_cache;
    proxy_cache_key     ghost$request_uri$scheme;
    proxy_pass          http://ghost_{{slug}}_upstream;
}

location /assets {
    root                {{assets_root}};    
}

したがって、上記の/assetsようなリクエストの場合http://example.com/assets/js/doit.js、上記の構成は一致し/assets、上で定義したルート ダイレクトに「assets/js/doit.js」を追加します。私が言ったように、この部分は機能し、私が指している場所にはファイルシステムで表される完全な URL パスがあるため機能します (たとえば、assets/jsファイルdoit.jsを含むディレクトリがあります)。

私が苦労しているのは-そして私はNGINXに非常に慣れていないので、これは簡単だと思う-次のような構成ブロックがある同様の状況です:

location /content {
    root                {{content_root}};
}

このブロックは、構成と実行の観点からはassetsブロックと同じですが、この場合、コンテンツに続くURL の部分のみを渡すようにしたいと考えています。したがって、リクエストが次の場合、返されるのは、次のファイルシステムに存在するものです。 http://example.com/content/images/july/foo.jpg

  • {{content_root}} +/images/july/foo.jpg

私が今得ているものの代わりに:

  • {{content_root}} +コンテンツ+/images/july/foo.jpg
4

1 に答える 1

0

わかりました、私は自分の質問に対する答えを見つけました... URL GET リクエストを次のように仮定しますhttp://example.com/content/js/foobar.js:

  • 元の場所ディレクティブ:

    location /content {
        root                /var/www/content;
    }
    

    「/var/www/content/ content」ディレクトリでJavaScriptファイルを誤って探します

  • 代わりに、次の場所ディレクティブを使用します。

    location /(content)/ {
        root                /var/www/content;
    }
    

    これにより、「/var/www/content」ディレクトリ内のファイルが正しく検索されます。

幸せな日々。

于 2014-08-10T13:26:58.107 に答える