Nginxで異なるユーザーで複数のVHostをホストする

あなたがサーバーを持っているとき、世界で最も普通のことは、セキュリティとより多くのセキュリティについて考えることです、あなたは決して十分に妄想することはできません

やや一般的な方法であり、何も推奨されませんが、すべてのデータベースに同じユーザーを使用することです。rootを使用するとさらに悪いことになります。これは、信じられないほど素晴らしいことですが、(浮浪または無知による)これを行う、私はあなたがこのように行動すべきではない理由についてすでに話しました 子供たちのポスト次に、Webサーバーの処理を異なるユーザーに分離する方法と理由を説明します。今回は、これを使用します。 nginx.

専用サーバー_サブイメージ

ユーザーとWebサーバーのそれは何ですか?

短く簡単に説明すると、Webサーバー(apache、nginxなど)は、システム内のプロセス、つまりHDDからファイル(画像など)を取得して作成するプロセスを開く必要があります。クライアントのブラウザで利用できます。 Webサーバーは、ファイルを単純に取得して操作することはできません。つまり、最終的にこれらすべてを実行するユーザーが必要です。そのユーザーが私が話しているユーザーです。わかりますか?

複数のユーザーに分離することとは何ですか?

私たちのサーバーに2つのWebサイトがあり、個人的なプロジェクトであるWebサイトともうXNUMXつのWebサイトがあるとします(それが私たちのガールフレンドまたは兄弟のものだと想像してみましょう)。 別々のデータベースと異なるユーザーを使用してそれらにアクセスする場合でも、最終的には両方のWebサイトのファイルが同じユーザーによって操作され、PHP処理はすべてのサイトで同じユーザーによって管理されます(通常はwww-dataです)。 これは推奨される方法ではありません。古いことわざにあるように、すべてを十分に分離することをお勧めします。後悔するよりも安全である方がよいでしょう。

わかりました、Nginxでそれを行うにはどうすればよいですか

2000px-Nginx_logo.svg

最初に注意することは、NginxにはApacheのようにPHP処理を処理する独自のモジュールがないことです。Nginxの場合、Apacheと同じように(またはそれ以上に)機能するPHP-CGIまたはPHP-FPMを使用する必要があります。 したがって、PHP処理を異なるユーザー間で分離するには、Nginx自体ではなく、PHP構成ファイル(CGIまたはFPM)の行を変更する必要があります。

使用するとします PHP-FPM、の構成ファイルを作成します プール 特定のサイトの場合、つまり、プールはPHP処理をPHP-FPMから分離する方法ですが、部分的に説明します。

1.まず、使用するシステムのユーザーを知る必要があります。まだ作成されていないものと想定します。作成しましょう。

以下のすべてのコマンドは、直接ルートまたはsudoを使用して、管理者権限で実行する必要があります

adduser blog

ユーザーの作成、パスワードの入力などの通常のプロセスを開始します。

例に従うだけでユーザーにブログを作成します。最初にホストするサイトはブログになります。...どのサイトに関連する各ユーザーを知るか

1. まず、/ etc / php5 / fpm / pool.d /に移動しましょう。

cd /etc/php5/fpm/pool.d/

2. 次に、blog.confというファイルを作成します。

touch blog.conf

3. 次に、VHostブログに使用するプールの構成を配置します。

nanoでblog.confファイルを編集します...例: 須藤 nanoblog.conf
[ブログ]ユーザー= ブログ
グループ= ブログ
リッスン= / var / run / php5-fpm-ブログ.sock listen.owner = ブログ
listen.group = ブログ
pm =オンデマンドpm.max_children = 96 chdir = /

注意: 私が赤でマークしているのは、以前に作成したユーザーに応じて変更する必要があるものです。 たとえば、別のユーザーと別のVHostを作成する場合(たとえばフォーラム)それでは、ブログの代わりに、各行にフォーラムを配置するだけです、それは理解されていますか?

4. 新しいプールの構成が完了したら(作成および編集したblog.confファイル)、このサイトでは、そのVHostに別の靴下を使用するようにNginxVHostに指示する番です。 使用される靴下は、以前に宣言した靴下(/var/run/php5-fpm-blog.sock)になります。 Nginx VHostを編集してみましょう。PHP処理部分では、そのソックスを使用することを示しています。 例えば:

場所〜\ .php $ {if(!-f $ request_filename){return 404; }
fastcgi_pass unix:/ var / run / php5-fpm-ブログ。靴下;
fastcgi_paramsを含める; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; fastcgi_read_timeout 300; }

ご覧のとおり、そのVHostのPHP処理(これらの行は、たとえば/ etc / nginx / sites-enabled / vhost-blog内にあります。)/var/run/php5-fpm-blog.sockにあるソックスでそれを行います...これは/etc/php5/fpm/pool.d/blog.confを編集するときに以前に作成したものです...わからない?

5. これが完了すると、サービス(php5-fpmとnginx)と出来上がりの両方を再起動します。そのサイト(vhost)の処理は、www-dataやrootなどではなく、ユーザーによって行われることがわかります。以前に定義された。

ここでは、の出力を示します ps補助 | grep fpm ノードのサーバーのXNUMXつ:

ps aux | grep fpm ebook 586 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm:pool ebook ebook 589 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm:プール電子ブックwww 608 0.0 0.2 350084 5008? S Mar30 0:00 php-fpm:プールwww www 609 0.0 0.2 350600 5048 30? S Mar0 00:3 php-fpm:プールwww tv611 0.0 0.0 349360 1204 30? S Mar0 00:3 php-fpm:プールtv3 tv615 0.0 0.0 349360 1204 30? S Mar0 00:3 php-fpm:プールtv1818マガジン1.7 1.7 437576 36396 09? S 55:0 46:2264 php-fpm:プールマガジンマガジン1.9 1.7 437332 35884 10? S 15:0 26:2338 php-fpm:プールマガジンの生徒4.3 1.0 428992 22196 10? S 18:0 53:2413 php-fpm:プール瞳孔マガジン1.8 1.7 437764 36152 10? S 22:0 18:2754 php-fpm:pool gutl Magazine 3.5 1.3 356724 27164 10? S 38:0 00:5624 php-fpm:pool gutl cgr 0.0 1.0 365168 22696 28? S Apr0 16:7900 php-fpm:プールcgr瞳孔0.3 2.5 457052 52444 25? S Apr20 23:11021 php-fpm:プール瞳孔瞳孔0.4 2.5 458316 52864 28? S Apr5 57:11254 php-fpm:プール瞳孔cgr 0.0 1.0 363152 21708 28? S Apr0 12:13184 php-fpm:pool cgr cgr 0.0 1.0 362872 21360 28? S Apr0 08:XNUMX php-fpm:プールcgr

ご覧のとおり... Nginx + PHP-FPMを使用してユーザーごとにPHP処理を分離するのは非常に簡単です。ユーザーが複数いるため、プールがいくつかあることがわかります。

結論

サーバーに関して言えば、あなたは決して十分に妄想的ではありません...セキュリティは遊ぶものではありません、私たちが常にサーバーとそのサービスのセキュリティを改善しようとすればするほど、私たちは(成功)によって怖がる可能性が低くなりますハッキングの試みまたは同様のもの😉


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ハンター

    我愛羅、現在のところ、これらは可能な限り自動化する必要があります。Ansibleを試してみることをお勧めします。 エージェントがなければ、リモートホストに必要なのはpythonだけで、設定は非常に簡単で、yamlファイル、Jinjaテンプレートが必要です。

    https://github.com/ansible/ansible-examples/tree/master/wordpress-nginx

    1.    KZKG ^我愛羅

      見てみましょう、それは必ずしもWordPressサイトだけではありません、そして... haha​​多分Ansibleはvolaoをクリックしますが、新しい靴下とを作成するのに1分を費やす必要がある場合でも、サーバー上ですべてがどのように機能するかを正確に知りたいです新しいVHost😀

      1.    ハンター

        Ansibleを使用すると、すべてを自動化し、実質的に必要なことをすべて実行できます。この方法の利点は、プラクティスをカプセル化してから自由に実行できることです。負荷の高いサイトがあり、アプリケーションサーバー間で負荷分散を行いたいと想像してください。まったく同じように構成する必要があります。ステップをスキップしたり、いずれかで何か違うことをしたりすることはできません。手順を4回ずつ実行することを想像できますか? Ansibleを使用すると、インベントリファイルとVoiláにホスト名を追加するのと同じくらい簡単です。

        http://www.ansible.com/how-ansible-works

      2.    ハンター

        Ansibleカルトについては申し訳ありませんが、これはあなたが発見したこれらのテクノロジーのXNUMXつであり、非常にクールで実用的であるため、今すぐすべての人に使用してもらいたいと考えています。

        https://speakerdeck.com/slok/ansible-all-the-things

  2.   ムスタアラビン

    私の投稿はこれを補完すると確信しています...
    http://blog.ngen.com.ar/configuracion-segura-de-un-webserver-con-nginx-php-fpm/

  3.   rots87

    私は開発者です(またはそうなるように勉強しています)。NGIXでは、nginx + php-fpmを構成するときに多くの問題が発生しました。 archlinuxディストリビューションがサーバーとして最適ではないことは知っていますが、ngixまたはphpのバージョンを更新するたびにすべてがクラッシュしたため、試行を断念しましたlol ...今日はクラシックなApache +を使用しますPHPですが、NGIXをもう一度回るかどうかを確認します...おそらく仮想マシンで

    1.    ハンター

      メンタリティは少し変わります。nginxは静的コンテンツを提供し、実際のP​​HPを実行するphp-fpmのリバースプロキシとして機能します。部分的に開始してデプロイを段階的に実行する必要があります。デプロイのガイドを探してください。使用するフレームワークでは、それぞれにパブリック、スタティック、リソースなどの名前による詳細があります...

  4.   匿名の

    存在しない「hostear」という言葉を放棄することをコミュニティに大いに支持してください。 神によって、「ホスト」と言うのはとても難しいですか?

  5.   ウィル

    ご挨拶、あなたの例に従って、ワードプレスのbacken、つまり、バックエンドへの着信接続用の新しいソケットを作成するwp-adminに対してのみプールを作成できるかどうかを知りたいと思います。

    場所/ wp-admin {
    ルート/var/www/yoursite.com/wp-admin;
    index index.php index.html index.htm;
    場所〜^ / wp-admin /(.+。php)$ {
    try_files $ uri = 404;
    ルート/var/www/yoursite.com/wp-admin;
    / etc / nginx / fastcgi_paramsを含めます。

    fastcgi_pass server unix:/run/php5-fpm2.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 256 4k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_read_timeout 1240;
    }
    location ~* ^/wp-admin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
    root /var/www/tusitio.com/wp-admin/;
    }
    }