Boa noite,
~ O que eu gostaria de fazer ~
Eu preciso de um bloco de localização padrão que corresponda a qualquer coisa, location / {}
, eu acho, este bloco tem seu próprio diretório raiz. ele tem que servir qualquer arquivo estático e interpretar quaisquer arquivos php dentro de sua raiz ou subpastas de documentos. (Eu configurei isso e parece funcionar bem)
E aqui é onde eu preciso de ajuda :(
…
Dentro deste mesmo bloco de servidores, eu gostaria de hospedar um aplicativo symphony do php servido ao atingir mydomain.foo/panel/
area. Então eu adicionei um ^~ /panel/
location (uri começa com / panel /)
Meu problema é que o try_files não se comporta como eu esperava (redirecionamento interno para o último local aninhado no caso de uri não corresponder ao local aninhado). Veja os comentários do código abaixo.
~ Minha configuração como está ... ~
upstream phpfcgi {
server unix:/var/run/php5-fpm.sock;
}
server {
listen 80;
server_name domain.tld;
## Default locations
location / {
root /home/me/sites/default/www;
index index.php;
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass phpfcgi;
}
location ~ /(.+) {
try_files $uri $1 =404;
}
}
## panel area
location ^~ /panel/ {
# Public files are located in sf/web sub-directory
alias /home/me/sites/sf/web/;
# Since uri starts with '/panel/', I expect NGINX to execute try_files as a last resort.
# if nested location do not match, and uri is not an existing file,
# shouldn't nginx do an internal redirect with the 2nd try_files argument
# and finally hit the nested location (triggering fastcgi_pass) ?
# But try_files is ignored and nginx falls back to "/" location above instead.
try_files $uri /panel/app_dev.php$is_args$args;
# FastCGIpass to upstream
location ~ (app_dev|config)\.php(/|$) {
try_files $fastcgi_script_name =404;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
include fastcgi.conf;
fastcgi_pass phpfcgi;
}
}
# Custom errors
error_page 403 404 =404 @null;
error_page 324 500 502 503 504 =500 @null;
location @null {
root /home/me/sites/_;
rewrite ^.+$ /$status.html break;
try_files $uri 444;
}
}
Se minha configuração for muito desajeitada, como posso atender aos meus requisitos? (local padrão com a raiz do documento e uma área especial servindo meu aplicativo php, no mesmo servidor)?
A documentação do NGINX está melhorando, mas ainda há coisas que não entendo no fluxo de processamento da solicitação.
Alguma solução / sugestão / melhoria?
Obrigado :)