web-dev-qa-db-fra.com

Comment résoudre une requête sur / folder en un documentroot distinct sur Apache 2.4 et transmettre php à deux pools fpm

J'ai deux questions.

(il a fallu supprimer un peu http: // dans mon exemple d'URL car je n'ai pas encore assez de réputation pour avoir encore plus d'URL dans ma question. il est donc dit //example.)

Question 1) J'ai un domaine comme http://example.com . Cela se traduit par une page chargée à partir de/var/www/exemple. Maintenant, je veux que toutes les demandes de //example.com/site2 soient résolues dans le dossier/var/www/site2.

C’est l’idée de base et j’ai essayé de le faire comme ceci (ce qui n’a pas fonctionné).

<VirtualHost *:80>
    ServerAdmin [email protected]

    DocumentRoot /var/www/example

    DirectoryIndex /index.html index.html

    #<LocationMatch "^/site2.*">
    #    RewriteEngine on
    #    RewriteRule . /example2/index.html [L]
    #</LocationMatch>

    AliasMatch "/site2(.*)" "/var/www/site2$1"
    <Directory /var/www/site2>
        Require all granted
        AllowOverride all
    </Directory>


    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${Apache_LOG_DIR}/error.log
    CustomLog ${Apache_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual Host. For example the
    # following line enables the CGI configuration for this Host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

J'ai essayé d'utiliser la directive Alias ​​et la correspondance Emplacement pour réécrire les éléments dans l'URL correcte en arrivant à l'URL/site2. C'était ma conf. Sur //example.com/site2/, il en résulterait l'index.html de //example.com/. Uniquement lors de la demande //example.com/site2/index.html.

<VirtualHost *:80>
    DocumentRoot /var/www/example

    DirectoryIndex /index.html index.html

    Alias "/site2" "/var/www/site2"
    <Directory /var/www/site2>
        Require all granted
        AllowOverride all
    </Directory>
</VirtualHost>

Question 2) Si 1 fonctionne, alors j'aimerais que toutes les requêtes php soient transmises à son propre pool fpm. Les requêtes pour example.com doivent être passées à fcgi: //127.0.0.1: 9000 et la requête pour //example.com/site2 doit être adressée à fcgi: //127.0.0.1: 9001.

[EDITED] (Référence modifiée pour fpm fcgi.) [EDITED] (Ajout de la configuration basée sur la directive Alias.)

1
matglas86

Selon "Question 1)":

  • vous devriez ajouter un alias:

    Alias /site2 /var/www/site2
    <Directory /var/www/site2>
        Require all granted
        AllowOverride all
    </Directory>
    
  • La directive DirectoryIndex lit les instructions en tant que noms de fichiers 'absolus'. Je veux dire avec cette syntaxe:

    DirectoryIndex /index.html index.html
    

    DirectoryIndex vérifiera si index.html, situé dans DocumentRoot = /, existe et l'affichera si oui, et ignorera les instructions suivantes. Donc, si cet enregistrement (/index.html) n'est pas destiné, il est erroné. Quelques exemples ici .

0
pa4080