Apache 대량 가상 호스팅 및 suexec 및 fcgid

Apache 대량 가상 호스팅 및 suexec 및 fcgid

나는 팔로우했다Falco의 튜토리얼이제 관련 디렉토리( /var/www/john/var/ww/alice)가 있는 2명의 사용자(예: john 및 alice)에 대해 모든 것이 예상대로 작동합니다.

이제 다음 단계로 넘어가고 싶습니다. /etc/apache2/sites-available/<username>Apache에서 다른 가상 호스트를 정의하고 다시 시작하는 대신 동적으로 구성된 대규모 가상 호스팅이 필요합니다(http://httpd.apache.org/docs/2.2/vhosts/mass.html). 내 DNS 서버에 다음에 대한 기록이 있다고 가정해 보겠습니다. another.site.example.com홈 디렉터리는 에 있습니다 /var/www/another.site/web.

문제는 suexec 및 mod_fcgid에 대한 이러한 모든 구성 설정입니다. 나는 이 초안을 마쳤습니다 httpd.conf(또는 와 같은 파일을 만들어야 합니까 /etc/apache2/sites-available/mass_virtual?):

NameVirtualHost *:80

#default virtual host
<VirtualHost *:80>
  ServerName www.example.com
  ServerAlias example.com
  ServerAdmin [email protected]
  DocumentRoot /var/www/root/web/

  <IfModule mod_fcgid.c>
    SuexecUserGroup web-admin web-admin
    <Directory /var/www/root/web/>
      Options +ExecCGI
      Options -Indexes
      AllowOverride All
      AddHandler fcgid-script .php
      FCGIWrapper /var/www/php-fcgi-scripts/root/php-fcgi-starter .php
      Order allow,deny
      Allow from all
    </Directory>
  </IfModule>

  # ErrorLog /var/log/apache2/error.log
  # CustomLog /var/log/apache2/access.log combined
  ServerSignature Off

</VirtualHost>

#3rd-level subdomain virtual hosts
<VirtualHost *:80>
  UseCanonicalName Off
  ServerAlias *.example.com
  #problematic email!
  ServerAdmin [email protected]
  #is this /var/www/another.site/web or /var/www/www.another.site/web for
  #a request for www.another.site.example.com ?
  VirtualDocumentRoot /var/www/%-3+/web

  <IfModule mod_fcgid.c>
    #problematic group and user!
    SuexecUserGroup web1 web1
    <Directory /var/www/*/web/>
      Options +ExecCGI
      Options -Indexes
      AllowOverride All
      AddHandler fcgid-script .php
      FCGIWrapper /var/www/php-fcgi-scripts/*/php-fcgi-starter .php
      Order allow,deny
      Allow from all
    </Directory>
  </IfModule>

  # ErrorLog /var/log/apache2/error.log
  # CustomLog /var/log/apache2/access.log combined
  ServerSignature Off

</VirtualHost>
  1. 댓글에서 볼 수 있듯이 문제가 있는 , a 및 구성이 있습니다!ServerAdmin [email protected]SuexecUserGroup web1 web1VirtualDocumentRoot /var/www/%-3+/web

  2. IfModule게다가 보안을 보장하기 위해 존재해서는 안 된다고 생각합니다 . mod_fcgid로드할 수 없으면 서버도 로드해서는 안 됩니다.

  3. 대신 에 php-library 디렉토리를 열어야 Alow from all할 것 같아요 !Deny from all

  4. 내가 말했듯이 내 의도는 www.another.site.example.com이 /var/www/another.site/web의 사용자에게 연결되도록 요청하는 것입니다. 그러나 "suEXEC 사용" VirtualHost 정의에서 SuexecUserGroup 지시문 없이 mod_userdir의 도움으로 suexec를 호출할 수 있습니다! 그러면 요청이 mod_rewrite의 도움 www.another.site.example.com으로 투명하게 변환된 www.example.com/~another.site다음 mod_userdir을 사용하여 suexec를 활성화하면 어떻게 될까요???

이 모든 것을 구현하는 아이디어나 지침이 있나요?

감사해요.

답변1

실제로 동적 가상 호스트 기능은 유연성이 충분하지 않기 때문에 최적이 아닙니다(어떤 경우에는 .htaccess가 충분하지 않음). 스크립트를 사용하여 가상 호스트를 생성하거나 puppet과 같은 것을 사용하여 가상 호스트를 정의합니다(https://github.com/puppetlabs/puppetlabs-apache).

btw: PHP 설정의 경우 (mod_proxy_fcgi 또는 mod_fastcgi)와 함께 php-fpm (ondemand)을 사용합니다. php-fpm을 사용하면 suexec가 필요하지 않습니다. 모든 사용자는 자신의 포트나 소켓을 갖습니다.

관련 정보