Question

Nginx content header response for static asset files(css,js,image etc) is type/html

Posted January 22, 2016 6.4k views
Nginx

below is configuration for virtual hosts

server {
    listen 80 default_server;
    #listen [::]:80 default_server ipv6only=on;


    root /var/www/html;
    index index.php index.html index.htm;

    # Make site accessible from http://localhost/
    server_name domainname.com www.domainname.com;

 location / {
                index index.php;
                include /etc/nginx/mime.types;
                location ~.*\.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|html|htm|txt|js|css|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso)$ {
                expires 7d;
                }

                location ~* \.php$ {
                fastcgi_index   index.php;

                 fastcgi_pass    127.0.0.1:9000;
#                fastcgi_pass unix:/var/run/php5-fpm.sock;
                include         fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
                fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
                }
          }

          if (!-e $request_filename)
          {
                rewrite ^(.+)$ /index.php?q=$1 last;
          }

          location ~ /\.ht {
          deny all;
          }
       }

But all images,stylesheets,js files are rendered with headerresponse as type/html.
This happened when the droplet was power off on after we faced connection timeout error.
Any help is appreciated.

edited by asb
1 comment

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
1 answer

Hi @shanbhagvikrant,

There is an module for Nginx called HttpHeadersMoreModule that gives you more control over headers. It does not come with Nginx and requires additional installation. With it, you can do something like this:

location ... {
  more_set_headers "Server: my_server";
}

That will “set the Server output header to the custom value for any status code and any content type”. It will replace headers that are already set or add them if unset.

Additionally, depending on your Nginx Version, you should be able to configure something like this as well

server {
    server_name  .myserver.com
    location / {
        proxy_pass  http://mybackend;
        add_header  $header;
    }
}

Regards,
KDSys

Submit an Answer