私がやりたいことは、一般的なサーバーに次のユーザーファイルを実行させることです。
http://users.example.com/~user1/stuff.php
どこかに保存されますが、/home/user1/www
そのユーザーの権限で実行されます。したがって、/home/user1/www
ディレクトリのスクリプトは/home/user2/www
ディレクトリのファイル/フォルダにアクセスできません(UNIX権限が許可しない限り)。
私ソリューションを読む仮想ホストを使用し、各仮想ホストごとに新しいプールがありますが、これは数百人のユーザーにとって重すぎる可能性があります。解決策はありますか?
私はRaspberry Piでnginxを実行しているので、これは単なるホームプロジェクトであり、実際には深刻ではありません。
答え1
nginxはPHPを直接実行せずにリクエストをPHPアプリケーションに渡すので、PHPバイナリの実行方法に興味があります。私はあなたがphp-fpmを実行していると仮定しますが、一般的なアイデアはphp-fpmに限定されません。
これphp-fpm設定ページ設定できるコマンドを表示します。 phpインスタンスが実行されるユーザーとグループ(およびスクリプトが実行される権限)を制御するため、およびuser
paramsに興味があります。group
このchroot
ディレクティブは、セキュリティシステムの作成にも役立ちます(/home/user1/www
ディレクトリ階層の親ファイルではなく、利用可能なファイルにのみ各ユーザーのアクセスを制限できます)。
ご覧のとおり、プールごとに設定されています。
したがって、ユーザーごとに 1 つずつ複数のプールを作成し、各プールをそのユーザーとグループで実行することができます。ユーザーのウェブルートとしてchrootすることもできます。接続されたソリューションは次のとおりです。
ただし、各ユーザーに新しいphp-fpmプールを設定する必要があるため、これは要求に応じて実行できる操作ではありません。代わりに、ユーザー生成プロセスの一部としてphp-fpmプールを作成します。