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