プロジェクトフォルダーでnginxの書き換えを管理する


1

私は、Apacheからnginxに移行する方法を理解しようとしています。開発者が変更ルールを柔軟に変更できるようにします。これが現在の設定です。

  • プロジェクトのルートフォルダー(およびいくつかのサブフォルダー)に.htaccessファイルがあります。
  • この.htaccessファイルでは、開発者は特定のスクリプトへのかなりパーマリンクの書き換えを定義できます(「グローバル」index.phpファイルは使用しません)
  • この.htaccessファイルはGitリポジトリに含まれているため、書き換えを追加/変更する際に、開発者がサーバー構成を変更する必要はありません(許可されていません)。

既に学んだ限り、nginxに相当するディレクトリごとの.htaccessのようなものはありません。では、どうすればこれを解決できますか?書き換えを解決するために「グローバルな」index.phpファイルを使用する必要がありますか?それはおそらく全体的なパフォーマンスを大幅に低下させるでしょう。

PSお気づきかもしれませんが、私はnginxを使用したことがありません。


フロントコントローラーを実際に使用しても、パフォーマンスが大幅に低下することはありません。基本的にswitchは、Webサーバー内の一連の正規表現ではなく、アプリケーション内の追加の呼び出しです。考えてみると、パフォーマンスはさらに向上する可能性があります...
マイケルハンプトン

正規表現(および最終的には条件)を使用してPHP配列をループすることは、サーバー構成ファイルで実行するよりもパフォーマンスが低いと言えます。
2ndkauboy 14年

1
私には時期尚早な最適化のように聞こえます。フロントコントローラーは、どこでもきれいです。持っていない理由はほとんどありません。
マイケルハンプトン

本当にApacheからNginxに切り替える必要がありますか?あなたのユースケースからは、Apacheが仕事のためのより良いツールかもしれません。
クリストファーペリン14年

私たちのウェブサイトの問題は、年に一度、週があり、トラフィックが通常の10倍になることです。nginxには、このような高負荷を解決するための多くのオプションがあります。したがって、nginxがこれらの高負荷をどのように処理するかを実際に試してみたいと思います。アウトセットアップは非常にユニークだとは思いません。
2ndkauboy 14年

回答:


0

OK、それではまず、nginxがパフォーマンスの問題(コメントごと)に本当に役立つかどうかを慎重に検討し、展開がどのように機能するかを心配する前に開発環境でテストする必要があると思います。

nginxはより高速であり、マルチスレッドアーキテクチャは高負荷に対処するのに役立ちますが、操作の一部でアカウントを1〜2%高速化しようとすると、非常に珍しいPHPサイトになります。合計遅延の。ボトルネックはほぼ確実にデータベースとPHPの実行にあります。

おそらく最初にPHPコンパイルキャッシュ(APCなど)、フロントエンドプロキシ(ニスやイカなど)、アプリケーション内の内部キャッシュ(このワードプレスはありますか?優れたキャッシュモジュールがいくつかあります)を見てください。静的ファイルの配信をnginxのみに引き渡すことは良い考えかもしれませんが、とにかく自分のプロキシを使用するか、コンテンツ配信ネットワークを使用することを検討することをお勧めします。

ただし、続行することにした場合、かなり重いツールであるにもかかわらず、いくつかのツールが思い浮かびます。継続的な統合および構成管理ツール(JenkinsやPuppet、または同等のもの)を使用して、適切なブランチにチェックインするたびに、バージョン管理リポジトリからサーバーに構成を展開できます。これは、インフラストラクチャの複雑さを学習して構築するのに非常に複雑であり、十分な知識、スキル、および注意がなければ、開発者にルートアクセス権を与えるだけでもかまいません。.htaccessを介したApacheの委任システムは長年にわたって開発されてきたものであり、急いでセキュリティを複製するつもりはありません。

戻って、プロファイリングツールを使用して、正規表現の処理がどれだけパフォーマンスの問題であるかについての仮定を確認します。私は主にXdebugを使用しましたが、他にも優れた代替手段があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.