Eu tenho uma VM com vários aplicativos de desenvolvimento vivendo nela. O diretório web básico se parece com:
/var/web/subdoms/:
index.php
MyApp/
SomeOtherApp/
Eu tenho meu arquivo de configuração do Nginx especificando a raiz como / var / web / subdoms, de modo que:
http://myserver/ -> /var/web/subdoms/index.php.
No subdiretório MyApp, é um projeto do Symfony2. No diretório SomeOtherApp é um aplicativo genérico perl-cgi
http://myserver/SomeOtherApp -> /var/web/subdoms/SomeOtherApp/index.pl
As solicitações para o MyApp precisam ser redirecionadas para um subdiretório, como:
http://myserver/MyApp/ -> /var/web/subdoms/MyApp/symfony/web/
A partir daí, as solicitações precisam ser reescritas para que as solicitações sejam entregues no app.php 'ala:
http://myserver/MyApp/ -> /var/web/subdoms/MyApp/symfony/web/app.php
http://myserver/MyApp/hello/you -> /var/web/subdoms/MyApp/symfony/web/app.php/hello/you
Eu posso fazer isso quando eu definir minha raiz: / var / web / subdoms / MyApp / symfony / web / e solicitar sans 'MyApp' seguindo os exemplos nas documentações do symfony. No entanto, quando tento aninhar o aplicativo em um diretório (para que meu servidor possa servir vários aplicativos no mesmo domínio, em vez de ser dominado pelo aplicativo symfony), a parte "MyApp" é adicionada à ala de URL:
http://myserver.com/MyApp/hello/you -> /var/web/subdoms/MyApp/symfony/web/app.php/MyApp/hello/you
E então o symfony reclama que não pode encontrar a rota "MyApp / hello / you". Eu poderia resolver isso adicionando 'MyApp' a todas as minhas rotas do symfony, mas isso parece desajeitado. Eu prefiro encontrar um caminho através do Nginx para encaminhar o diretório url sans para o Symfony.
Se isso ajudar, aqui está minha configuração atual do nginx (com os outros aplicativos removidos):
server {
listen 80;
server_name myserver;
root /var/web/subdoms;
error_log /var/log/nginx/rr_error.log;
access_log /var/log/nginx/rr_access.log;
location /MyApp/ {
rewrite ^/MyApp/(.*)$ /MyApp/symfony/web/app_dev.php/$1 last;
}
#was the way to redirect requests to app_dev.php when MyApp/Symfony/web was root
location @rewriteRR {
rewrite ^(.*)$ /app_dev.php/$1 last;
}
location ~ \.php(/|$) {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_pass 127.0.0.1:9000;
}
location ~ /\.ht {
deny all;
}
}
Como conclusão, eu sei que provavelmente é melhor usar um subdomínio para separar os aplicativos (ou vários domínios), mas como dito anteriormente, este é um servidor de desenvolvimento. Dividindo-o entre sub-domínios, hosts diferentes, etc seria muito caro para o que é. Eu preciso manter tudo no mesmo host / domínio por motivos de custo (SSL Certs / taxas de hospedagem), evitando auto-assinar meus certificados (porque enquanto o desenvolvimento, os aplicativos são usados por outras pessoas em um contexto casual e os erros auto-assinados irritá-los).