Pelo amor do nginx, não consigo me acostumar com essa questão.
Desejado: Eu quero dois projetos php simples (wordpress no longo prazo) em dois sub-locais em um bloco de servidor. Nota: Esses projetos residem em dois diretórios diferentes no servidor implantado com o capistrano.
Problema: eu acabo com um download de fluxo de octeto direto 404, 403 ou direto do index.php. No último eu pareço acertar o index.php correto, mas ele não é passado para o bloco php-fpm. O php-fpm está funcionando e não o problema (testado em outro servidor sem sublocações)
Eu procurei em toda a web e tentei zilhões de configurações de "trabalho", mas não está se unindo.
Plano: Abaixo, você vê um vhost nginx em funcionamento, atingindo os arquivos index.html corretos nos diretórios de alias corretos. Assim estou no meio do caminho.
Com sua ajuda, eu gostaria de adaptar a configuração abaixo, para alterar o index
para index.php e fazer o php funcionar em location /staging
e /production
.
No location /production
você vê uma configuração (comentada) como eu tentei fazer o php funcionar.
server {
listen 82;
listen [::]:82;
server_name nginx-web.ch;
access_log /var/log/nginx/nginx-web_access.log;
error_log /var/log/nginx/nginx-web_error.log;
location /staging {
alias /var/www/nginx-web1/current;
index index.html
add_header X-debug-message "Location web1";
}
location /production {
alias /var/www/nginx-web/current;
index index.html
add_header X-debug-message "Location web";
#try_files $uri $uri/ /production/index.php;
#location ~ \.php$ {
# add_header X-debug-message "Location ~ php";
# try_files $uri =404;
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_index index.php;
# include fastcgi_params;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#}
}
}
Aqui está um bloco de servidores que ele tentou adaptar para sublocações, sem sucesso: (
server {
listen 80;
listen [::]:80;
server_name testdev;
access_log /var/log/nginx/wp_access.log;
error_log /var/log/nginx/wp_error.log;
root /var/www;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
UPDATE com CONFIGURAÇÃO DE TRABALHO (tem < 3 serverfault / stackoverflow):
Aqui está a configuração final de trabalho, muito obrigado a @RichardSmith
server {
listen 82;
listen [::]:82;
server_name nginx-web.ch;
access_log /var/log/nginx/nginx-web_access.log;
error_log /var/log/nginx/nginx-web_error.log;
index index.php;
location ^~ /staging/ {
alias /var/www/nginx-web1/current/;
if (!-e $request_filename) { rewrite ^ /staging/index.php last; }
location ~ \.php$ {
if (!-f $request_filename) { return 404; }
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
location /production {
alias /var/www/nginx-web/current;
if (!-e $request_filename) { rewrite ^ /production/index.php last; }
location ~ \.php$ {
if (!-f $request_filename) { return 404; }
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
}