O problema fundamental é que você está veiculando todo o conteúdo via php-fpm , tanto conteúdo estático quanto conteúdo dinâmico. É comum permitir que nginx veicule conteúdo estático. Nesse caso, nginx é responsável por definir o cabeçalho Content-Type com base na extensão do arquivo.
Na sua configuração atual, tudo é passado para php-fpm e recebe o padrão Content-Type de text/html . Presumivelmente, você desabilitou security.limit_extensions para fazer isso funcionar.
Você pode usar dois blocos location , um para conteúdo estático e um para conteúdo dinâmico. O que se segue baseia-se na sua pergunta e exemplo do nginx wiki :
server {
listen 3001 default_server;
listen [::]:3001 default_server;
root /media/common/code/projects/newdf;
index index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param HTTP_PROXY "";
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
}
EDIT: Adicionado o seguinte exemplo simplificado para aplicativos que não exigem informações de caminho:
server {
listen 3001 default_server;
listen [::]:3001 default_server;
root /media/common/code/projects/newdf;
index index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param HTTP_PROXY "";
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}