Nginx设置错误的内容类型

时间:2017-02-01 15:44:48

标签: php nginx header

我有一个在线网络服务器,我已经部署了多个应用程序,他们都必须共享域名,所以我的nginx配置有点乱。我最后一次更改它时,PHP文件没有加载错误("访问被拒绝文件")所以我不得不做一些更改,现在其中一个应用程序的配置就像这样:

location ^~ /vuelos_baratos {      
   root /home/gonzalo;
   try_files $uri $uri/ /$uri/index.php /index.php$is_args$args $uri/index.php =404;
   #root /usr/share/nginx/html;
   fastcgi_split_path_info ^(.+\.php)(/.+)$;
   fastcgi_pass unix:/run/php/php7.0-fpm.sock;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include /etc/nginx/fastcgi_params;
   include  /etc/nginx/mime.types;
   autoindex on;
}

这个应用程序的网址是这样的:

mydomain.com/vuelos_baratos/index.php

mydomain.com/vuelos_baratos/style.css

... 等等。

PHP文件和一切正常,但是如果我尝试访问:

mydomain.com/vuelos_baratos/image.png

我得到图像的二进制数据,我发现这是因为" vuelos_baratos"下的所有文件的标题。设置为type:text / html

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我不认为nginx负责确定当前配置中的内容类型,因为您将所有内容传递给php-fpm。

您可以将静态和动态部分划分为不同的位置,例如:

location ^~ /vuelos_baratos {      
    include  /etc/nginx/mime.types;

    root /home/gonzalo;
    index index.php;

    try_files $uri $uri/ /index.php$is_args$args;

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;

        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $request_filename;
    }
}

这应该意味着/vuelos_baratos/image.pngnginx处理,而/etc/nginx/mime.types用于确定内容类型。