ホームページ > バックエンド開発 > PHPチュートリアル > Nginx+PHPの正しい考え方と設定手順、nginxphp_PHPの設定の考え方チュートリアル

Nginx+PHPの正しい考え方と設定手順、nginxphp_PHPの設定の考え方チュートリアル

WBOY
リリース: 2016-07-12 08:52:46
オリジナル
964 人が閲覧しました

Nginx + PHP を構成する正しい考え方とプロセス、nginxphp を構成する考え方

多くの人にとって、Nginx + PHP を構成することは、チュートリアルを検索してコピーして貼り付けることに他なりません。何の問題もないように思えますが、実際には、インターネット上の多くの情報は荒廃しており、抜け穴が満載です。深い理解を求めずにただコピペすると、遅かれ早かれその代償を払うことになります。 。

Nginx+PHPを正しく設定する方法

PHP を使用してフロントエンド コントローラーを実装するとします。率直に言えば、これは統合された入り口です。すべての PHP リクエストを同じファイルに送信し、このファイル内の "REQUEST_URI" を解析することでルーティングを実装します。

一般的にはこのように構成されています

現時点では、多くのチュートリアルで次のように Nginx+PHP を構成する方法が説明されています:

リーリー

たくさんの間違い、あるいは少なくとも悪趣味なところがあります。見てみればいくつか見つかります。

まず、Nginx 構成ファイル内の命令の継承関係を理解する必要があります。

Nginx 設定ファイルは、外側から内側への一般的なブロックは「http」、「server」、「location」などです。デフォルトの継承関係は外側から内側であり、内側のブロックは自動的に継承されます。外側のブロックの値をデフォルト値として取得します。

まずは「index」コマンドから始めましょう

問題の設定では、「場所」で定義されています:

リーリー

将来的に新しい「場所」を追加する必要があると、必然的に「インデックス」命令が繰り返し定義されることになります。これは、複数の「場所」が水平関係にあり、この場合「インデックス」が存在しないためです。 「「server」index」で定義する必要があります。継承関係の助けを借りて、「index」コマンドはすべての「場所」で有効になります。

「if」コマンドを見てみましょう

最も誤解されている Nginx コマンドと言っても過言ではありません:

リーリー

多くの人は一連のチェックを行うために "if" 命令を使用することを好みますが、これは実際には "try_files" 命令の役割です。

try_files $uri $uri/ /index.php;
さらに、初心者は「if」命令がカーネルレベルの命令であると考えがちですが、実際には書き換えモジュールの一部です。また、Nginx の設定は実際には手続き型ではなく宣言型であるため、命令と混合される場合があります。非書き換えモジュールからは、期待どおりの結果が得られない可能性があります。

以下の「fastcgi_params」設定ファイルを見てください

fastcgi_params を含める;
Nginx には、「fastcgi_params」と「fastcgi.conf」という 2 つの fastcgi 設定ファイルがあります。それらに大きな違いはありません。唯一の違いは、後者の「SCRIPT_FILENAME」定義が前者よりも 1 行多いことです。

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

注: $document_root と $fastcgi_script_name の間には / はありません。

元々、Nginx には「fastcgi_params」しかありませんでしたが、後に「SCRIPT_FILENAME」を定義するときにハードコーディングを使用する人が多いことがわかり、使用法を標準化するために「fastcgi.conf」が導入されました。

しかし、これには疑問が生じます。なぜ古い設定ファイルを変更するのではなく、新しい設定ファイルを導入する必要があるのでしょうか?これは、「fastcgi_param」命令が配列型であるためです。通常の命令と同じで、内側の層が外側の層を置き換えます。通常の命令との違いは、同じレベルで複数回使用される場合、代わりに追加されることです。交換されました。つまり、「SCRIPT_FILENAME」が同じレベルで 2 回定義されている場合、両方ともバックエンドに送信されるため、潜在的な問題が発生する可能性があります。このような状況を回避するために、新しい構成ファイルが導入されました。

さらに、セキュリティの問題も考慮する必要があります。PHP で「cgi.fix_pathinfo」がオンになっている場合、PHP は間違ったファイル タイプを PHP ファイルとして解析する可能性があります。 Nginx と PHP が同じサーバーにインストールされている場合、最も簡単な解決策は、「try_files」コマンドを使用してフィルタリングすることです:

try_files $uri =404;

改良版

以前の分析に基づいて、これはオリジナルのバージョンよりもはるかにクリーンになっていますか? リーリー

Nginx + PHP を正しく設定する方法は、誰もが独自の理解を持っているはずです。

http://www.bkjia.com/PHPjc/1125885.html

本当http://www.bkjia.com/PHPjc/1125885.html技術記事 Nginx+PHP を構成するための正しい考え方とプロセス 多くの人にとって、Nginx+PHP を構成するということは、チュートリアルを検索してコピーして貼り付けることに他なりません。何もないようですね...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート