1

サーバー上で画像が見つからない場合は、画像のリクエストをgithubリポジトリにリダイレクトしたいと思います。どこを間違えたの?

    location ~* \.(gif|jpg|jpeg|png)$ {
            try_files $uri /gitpipe =404;
    }

    location ~* /gitpipe$ {
            proxy_pass https://raw.github.com/Org/$arg_repo/master/$uri;
    }

構成を次のように変更します

location ~* \.(gif|jpg|jpeg|png)$ {
    try_files $uri /gitpipe =404;   
}

location = /gitpipe {
            proxy_pass http://websaints.net/rlog.php?save;
}

しかし、結果は同じです。Nginxはリクエストを静的URLにリダイレクトしませんhttp://websaints.net/rlog.php?save ; したがって、$uriでは問題はありません。


ところで、この構成は機能しますが、プロキシしてキャッシュするのではなく、URIにリダイレクトします

location ~* \.(gif|jpg|jpeg|png)$ {
    try_files $uri @redirect;
}

location @redirect {
            return 301 http://websaints.net/rlog.php?save&req=$request_uri;
}

うーん...

4

1 に答える 1

1

最初は、次のように簡単に変更できますlocation

location = /gitpipe { 

`^/gitpipe$' と同じ意味ですが、nginx で最も優先度が高いため、そのような場所が常に最初に取得されます。

次に、ファイルが存在する場合はファイルを返そうとしているので、次のような URL を使用します。

http://your.domain.com/some_dir/another_dir/some_file.gif

次のようにディレクティブから始まるファイルを取得しようとしている最初のlocationブロックを渡します。root

root_directive/some_dir/another_dir/some_file.gif

このファイルが存在しない場合はtry_files、2 番目のブロックで検索する必要があることをディレクティブに伝えlocationます。ここでは、そのような URL を渡すプロキシです。

proxy_pass https://raw.github.com/Org/$arg_repo/master/$uri;

ただし、この例では、次のことを意味します。

proxy_pass https://raw.github.com/Org/$arg_repo/master//root_directive/some_dir/another_dir/some_file.gif

その値はどこ$arg_repoで変化しますか。

あなたのディレクティブが何をするかについてのこの説明は、まさにあなたが考えていたことですか?

必要なものに簡単にリダイレクトする方法は次のとおりです。

location ~ \.(jpg|png|gif) {
   try_files $uri /proxy$request_url =404;
}

location ^~ /proxy(.*) {
   proxy_pass https://your.proxy.domain/$1;
}
于 2013-01-27T14:40:39.443 に答える