0

サーバー上の /images/someimage.png へのリクエストをhttp://some.other.server/images/someimage.pngにリダイレクトしたいと考えています。私のnginx設定には次のものがあります:

location ^/images/.*(png|jpg|gif)$ {
    rewrite ^/images/(.*)(png|jpg|gif)$ http://anotherserver.com/images/$1$2 redirect;
    return   302;
}

しかし、何らかの理由でhttp://test.com/images/test.pngを要求してもヒットしません (そのファイルがサーバーに存在しないため、404 が返されます)。

4

1 に答える 1

1

私があなたを正しく理解していれば、あるサーバーの /image/ URL を別のサーバーの同じパスに 302 リダイレクトする必要があります。次のようにできます。

location /images/ {
  rewrite ^ $scheme://anotherserver.com$request_uri redirect;
}

必要はありませんreturn 302 すでにrewrite ... redirectそれを行っています(代わりに 301 リダイレクトが必要な場合は を使用しますrewrite .... permanent

他のサーバーにも同じ URL がある限り、正規表現は必要ありません。組み込み変数で十分です。

注: あなたの場所がヒットしない理由は、location ^/images/.*(png|jpg|gif)$代わりにlocation ~ ^/images/.*(png|jpg|gif)$. つまり、正規表現の一致を通知するのを忘れていました (~大文字と小文字を区別する、または~*大文字と小文字を区別しない)。

于 2012-10-28T18:31:49.940 に答える