nginx try_files と複数のロケーションブロック

nginx try_files と複数のロケーションブロック

ドメインが 2 つあり、それぞれにドキュメント ルートがあります。一方のドメインのルートには、もう一方のドメインからアクセスできるようにしたい pics フォルダーと docs フォルダーが含まれています。そのため、domain1.com/pics/house.jpg と domain2.com/pics/house.jpg には同じ画像が表示されます。

以下は、domain2 の設定ファイルからの抜粋です。うまくいきません。domain2 の domain1 ルートにあるイメージにアクセスすると、常に 404 が表示されます。これを修正するために書き直す方法について、何かアドバイスがあれば、ぜひお聞かせください。ありがとうございます。

root /home/admin/domain2.com/html;

index index.php index.html;

location /pics/ {
       root /home/admin/domain1.com;
}

location /docs/ {
       root /home/admin/domain1.com;
}

location / {
        try_files $uri $uri/ =404;
}

location ~ \.php$ {
       include snippets/fastcgi-php.conf;
       fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

答え1

結局、私のコードは /pics/ にさらにフォルダが含まれている場合には機能しませんでした。次のコードを使用すると機能しました。

location ^~ /pics/ {
       root /home/admin/domain1.com;
       # Queries beginning with /pics/ and then stops searching.
}

関連情報