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.
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.
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.
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;
}
}