ホームページ > バックエンド開発 > PHPチュートリアル > 異なる URI を持つサブフォルダーを提供するために Nginx ロケーション ブロックを効率的に構成するにはどうすればよいですか?

異なる URI を持つサブフォルダーを提供するために Nginx ロケーション ブロックを効率的に構成するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-24 01:11:15
オリジナル
226 人が閲覧しました

How to Efficiently Configure Nginx Location Blocks for Serving Subfolders with Different URIs?

サブフォルダーの Nginx ロケーション構成

Nginx 構成では、組織とルーティングを改善するために、特定のフォルダー パスを異なる URI にマップできます。一般的なシナリオは、ディレクトリ内のサブフォルダーへのアクセスを構成することです。

2 つのサブフォルダー /static と /manage が存在する /var/www/myside/ のようなパス構造を考えてみましょう。目標は、PHP ファイルの適切なルーティングを確保しながら、URI / (/static の場合) および /manage (/manage の場合) を介してこれらのサブフォルダーにアクセスすることです。

初期のサンプル Nginx 構成は次のようになります。

server {
  listen 80;
  server_name example.org;
  error_log /usr/local/etc/nginx/logs/mysite/error.log;
  access_log /usr/local/etc/nginx/logs/mysite/access.log;
  root /var/www/mysite;

  location /manage {
    root $uri/manage/public;

    try_files $uri /index.php$is_args$args;
  }

  location / {
    root $uri/static/;

    index index.html;
  }

  location ~ \.php {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9000;
  }
}
ログイン後にコピー

ただし、この構成は /manage にアクセスする場合に正しく機能しない可能性があります。解決策は、別の URI でサブフォルダーにアクセスするときに、ルートの代わりにエイリアス ディレクティブを使用することです。

修正された Nginx 構成は次のとおりです:

server {
    ...

    location ^~ /manage {
        alias /var/www/mysite/manage/public;
        index index.php;

        if (!-e $request_filename) { rewrite ^ /manage/index.php last; }

        location ~ \.php$ {
            ...
        }
    }

    ...
}
ログイン後にコピー

この変更により、構成は / static からはルートを使用して / に、/manage からはエイリアスを使用して /manage に設定します。さらに、try_files ディレクティブと if ディレクティブは、これらのサブフォルダー内に存在しないファイルに対するリクエストが適切に処理されることを保証します。

ロケーション ブロックを適切に使用し、エイリアス ディレクティブとルート ディレクティブを組み合わせることで、Nginx を次のように構成できます。特定の URI を持つサブフォルダーからコンテンツを効果的に提供します。

以上が異なる URI を持つサブフォルダーを提供するために Nginx ロケーション ブロックを効率的に構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート