내가 하고 싶은 것은 일반적인 서버가 다음과 같은 사용자 파일을 실행하도록 하는 것입니다.
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
디렉토리 계층의 상위 파일이 아닌 에서 사용 가능한 파일에만 각 사용자의 액세스를 제한할 수 있습니다).
보시다시피 풀별로 설정되어 있습니다.
따라서 각 사용자마다 하나씩 여러 풀을 만들고 각 풀이 해당 사용자 및 그룹에서 실행되도록 할 수 있습니다. 사용자의 웹루트로 chroot할 수도 있습니다. 연결하신 솔루션은 다음과 같습니다.
하지만 각 사용자마다 새로운 php-fpm 풀을 설정해야 하기 때문에 이는 요청에 따라 수행할 수 있는 작업이 아닙니다. 대신, 사용자 생성 프로세스의 일부로 php-fpm 풀을 생성하십시오.