ホームページ > バックエンド開発 > PHPチュートリアル > 異なるルートパスを持つ 2 つのサブフォルダーからコンテンツを提供するように Nginx を構成するにはどうすればよいですか?

異なるルートパスを持つ 2 つのサブフォルダーからコンテンツを提供するように Nginx を構成するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-23 00:52:12
オリジナル
443 人が閲覧しました

How to Configure Nginx to Serve Content from Two Subfolders with Different Root Paths?

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

この記事では、2 つのサブフォルダー (1 つは次の場所) からコンテンツを提供するように Nginx を構成する方法について説明します。ルート パスと特定の URL のもう 1 つのパス。

次のディレクトリについて考えてみましょう。構造:

/var/www/myside/
├── static
├── manage
ログイン後にコピー

私たちの目標は、/static フォルダーにルート URL (例: http://example.org/) でアクセスできるようにし、/manage フォルダーに /manage (例: http) でアクセスできるようにすることです。 ://example.org/manage)。この場合、/manage フォルダーには Slim の PHP フレームワーク コードが含まれており、実際の PHP ファイルは /var/www/mysite/manage/public/index.php.

Nginx Configuration にあります。

これを実現するには、Nginx の location ディレクティブを使用できます。可能な構成は次のとおりです:

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 / {
    root /var/www/mysite/static;
    index index.html;
  }

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

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

    location ~ \.php$ {
      if (!-f $request_filename) {
        return 404;
      }
      fastcgi_pass 127.0.0.1:9000;

      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $request_filename;
      fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
  }

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass 127.0.0.1:9000;

    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_index index.php;
  }
}
ログイン後にコピー

説明

構成を詳しく見てみましょう:

  • 最初のロケーション ブロック (/ ): /static フォルダーがルートから提供されるように指定しますURI.
  • 2 番目のロケーション ブロック (/manage): エイリアス ディレクティブを使用して、/manage URI を /var/www/mysite/manage/public ディレクトリにマップします。
  • 3 番目のロケーションブロック (/manage 内の location ~ .php$): PHP を構成します/manage フォルダー内のファイル処理。
  • 最終ロケーション ブロック (サーバー レベルの場所 ~ .php$): /static フォルダー内の PHP ファイル処理を構成します。

エイリアスとルートの使用法

を使用する場合エイリアスとして、Nginx は元の URI を維持しながら、指定されたディレクトリからファイルを提供します。 /manage URI が /var/www/mysite/manage/public ディレクトリを指すようにしたいので、これは目的にとって便利です。

対照的に、root は location ブロックのルート ディレクトリを変更します。これは、異なる場所から異なるサブフォルダーを提供するシナリオには適していません。

の書き換えルールIndex.php

書き換えルールにより、/manage フォルダー内に存在しないファイルに対するリクエストは確実にindex.php にリダイレクトされます。これにより、Slim の PHP アプリケーションがリクエストを処理できるようになります。

PHP ファイル処理

PHP ファイル処理用の両方のロケーション ブロックには、FastCGI などの PHP スクリプトを実行するために必要な設定が含まれています。設定と変数。 fastcgi_pass ディレクティブは、PHP リクエストを PHP FastCGI サーバーに送信します。

最後の注意事項

PHP FastCGI サーバーが実行中であり、適切に構成されていることを必ず確認してください。この設定により、/static サブフォルダーと /manage サブフォルダーの両方からコンテンツを正しく提供できるようになります。

以上が異なるルートパスを持つ 2 つのサブフォルダーからコンテンツを提供するように Nginx を構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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