Nginx - vários vhosts que requerem acesso à função compartilhada

1

eu tenho algum aplicativo php em 1 docroot como abaixo:

/data/app/
|-- antispam.php
|-- api
|   '-- functions.php
|-- images
|-- messaging
|-- parents
|   '-- index.php
'-- students
    '-- index.php

Eu quero criar um vhost do diretório acima, de modo que o docroot se torne:

/data/app/parents : parents.example.com 
/data/app/students : students.example.com

esses vhost precisarão de acesso a alguma função compartilhada de / data / app (antispam.php, api / functions.php, messaging / & images /)

algum trecho da minha configuração do nginx: parents.example.com

server {
        listen 80;
        server_name  parents.example.com;
        root   /data/app/parents;
        index index.php ;
        access_log /var/log/nginx/example.com.log combined;
        location ~ ^/api { root /data/app/; }
        location ~ ^/images { root /data/app/; }
        location ~ ^/antispam.php {  alias /data/app/antispam.php ; 
                include fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME $request_filename;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
        }
}

configuração acima trabalhando desde que eu defini o local e o docroot (/ data / app) tem um diretório válido. o problema é se eu tenho 100 diretórios (contém script PHP) em / data / app que são requeridos por um vhost, devo definir cada um deles no bloco do servidor Nginx? Gostaria de saber que, se nenhum definido no bloco de localização, ele irá procurar em / data / app / first antes de cometer 404, algo como try_files talvez.

    
por adinovic 11.09.2018 / 20:14

2 respostas

0

Eu sugiro que você use links simbólicos no sistema de arquivos para que /data/app/parents/antispam.php seja um link simbólico apontando para ../antispam.php . Você pode executar o mesmo com subdiretórios.

    
por 11.09.2018 / 21:37
0

Você pode usar variáveis em uma diretiva server_name e reutilizá-las em outras diretivas, incluindo a diretiva raiz.

Então você deve ser capaz de definir subdomínios infinitos usando um único bloco, algo assim:

server {
        listen 80;
        server_name  ~(?<subdomain>^.*?)\.?example\.com;
        root   /data/app/$subdomain;
        index index.php;
        access_log /var/log/nginx/$subdomain.example.com.log combined;

        location /api/ {
            root /data/app;
        }

        location /images/ {
            root /data/app;
        }
        location ~ \/antispam.php$ { 
            alias /data/app/antispam.php ; 
            include fastcgi_params;
            fastcgi_param   SCRIPT_FILENAME $request_filename;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
        }
}
    
por 12.09.2018 / 02:29

Tags