2

最初にnginxを静的ファイルサーバーとして使用し、ハッシュが含まれている場合はすべてのuriを書き換えて、モックディレクトリを指すようにします。

例でより明確になるかもしれません

これらのようなユーザー要求ページの URL を考えてみましょう:

/api/some/path/to/ecbac7cb-21ca-3d22-98ed-4d063f138d0b/some/other/path/02167621-5c01-45c5-98ba-eb3ba1bf4b2a/list

/api/some/other/path/to/ecbac7cb-21ca-3d22-98ed-4d063f138d0b

最初にファイルを取得しようとしますが、フォールバックは次のようになります

/api/some/path/to/__any_hash__/some/other/path/__any_hash__/list.json

/api/some/other/path/to/__any_hash__.json

ここに私が試した設定があります...しかし、明らかに、それは機能していません。

server {
 ...
 location /api {
  try_files $uri $uri/index.html $uri.html $uri.json $uri.xml @rewrites;
 }

 location @rewrites {
  rewrite /([0-9\-a-f]{36})/ __any_hash__ break;
  try_files $uri.xml $uri.json @backend;
 }

誰にもアイデアがありますか?

4

1 に答える 1

2

おそらくlocation @rewrites次のようになります。

location @rewrites {
    rewrite "^(.*)/[0-9\-a-f]{36}(/.*)$" $1/__any_hash__$2 last;
    return 404;
}

置換するハッシュの前後の URI フラグメントをキャプチャします$1。により$2、置換後に が再試行されます。このプロセスは、すべての置換が行われるまでループします。は、完全に置換された URI でファイルが見つからない場合にのみ呼び出されます。lastlocation /apireturn 404

于 2016-02-02T00:20:37.093 に答える