nginxにルート以外の場所からファイルを提供する仮想サブディレクトリを作成する必要があります。この仮想ディレクトリはPHPも実行しますが、簡潔にするためにfastcgiの設定を省略しました。nginxロケーションブロックの否定的なlookbehind
私は2つのロケーションブロックを持っていますが、/ virtualディレクトリ用のものはエイリアスを使用していますが、/のロケーションブロックはそれ自身のルートディレクティブです。このルートディレクティブは、仮想フォルダによって継承され、パスを混乱させます。/virtual内のurlを/ locationブロックのルートディレクティブを継承しないようにする方法はありますか?ここで
は私のサーバ設定の抜粋です:
server {
root /path/to;
location ^~ /virtual/ {
alias /path/to/lions/public;
try_files $uri $uri/ /lions/public/index.php?$query_string;
}
location/{
root /path/to/tigers/public;
try_files $uri $uri/ /index.php?$query_string;
}
}
私はホスト名を参照する場合は/仮想/何でも、nginxのは
/path/to/tigers/public/lions/public/whatever
代わりの
/path/to/lions/public/whatever
でファイルを探します
私は以下のパターンを、/ virtualで始まるものと/以外で始まるすべてのURLに一致させようと試みましたが、 atch何か。
location ^~ ((?!\/virtual)\/.*)$
また、/ virtualのロケーションブロックにエイリアスとルートディレクティブの両方を入れてみましたが、nginxは起動しませんでした。
エイリアスディレクトリに別のルートを設定する方法はありますか。
試行【このアプローチ(https://stackoverflow.com/a/16304073/3832970)。 'location〜^ /?virtual /.*$ {#empty}'を使い、 'location/{...}'を使ってください。 –