nginx - ユーザー権限を持つuserdir

nginx - ユーザー権限を持つuserdir

私がやりたいことは、一般的なサーバーに次のユーザーファイルを実行させることです。

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インスタンスが実行されるユーザーとグループ(およびスクリプトが実行される権限)を制御するため、およびuserparamsに興味があります。groupこのchrootディレクティブは、セキュリティシステムの作成にも役立ちます(/home/user1/wwwディレクトリ階層の親ファイルではなく、利用可能なファイルにのみ各ユーザーのアクセスを制限できます)。

ご覧のとおり、プールごとに設定されています。

したがって、ユーザーごとに 1 つずつ複数のプールを作成し、各プールをそのユーザーとグループで実行することができます。ユーザーのウェブルートとしてchrootすることもできます。接続されたソリューションは次のとおりです。

ただし、各ユーザーに新しいphp-fpmプールを設定する必要があるため、これは要求に応じて実行できる操作ではありません。代わりに、ユーザー生成プロセスの一部としてphp-fpmプールを作成します。

関連情報