内容类型响应标头是否必要?

时间:2014-04-24 22:33:39

标签: nginx http-headers content-type reverse-proxy

我正在将各种类型的内容(gif,jpeg,png,css,pdf)上传到亚马逊s3。然后我将Nginx放在S3前面,这样我就可以重写网址并让它们被azure cdn拉出来。

我遇到的问题有时是上传文件(各种方式,但主要是javascript http上传)我们经常忽略放置内容类型。我试图弄清楚是否值得花时间让nginx通过严重的位置和if语句更正这些标题或者我应该只删除所有内容类型标题。

例如: 当我在Chrome网络检查器中查看此网址时,我看不到返回的内容类型标头。 http://wiki.nginx.org/local/nginx-logo.png

我们终于可以自己确定内容类型吗?

添加内容类型标题是否具有任何特定的PERFORMANCE优势?

根据文件扩展名设置内容类型的快速nginx规则是什么? 例如,如果网址是mydomain.com/s3reverseproxy/uploads/test.css?querystring=random正确设置其内容类型?目前我正在使用这个,但担心很多if语句可能是一个坏主意:

    location ~* ^/s3/(.*) {


  # Headers based on file extensions
  more_clear_headers        'Content-Type';
  if ($request_uri ~* .*svg.*) {  
    more_set_headers        "Content-Type:image/svg+xml";
    more_set_headers        "X-Content-Type:OverRidden";
  }


  set $s3_bucket           'mybucket.s3.amazonaws.com';
  set $url_full            '$1';

  # HEADERS
  more_set_headers          "Server: PROXYS3";
  add_header                Cache-Control "no-transform,public,max-age=36720000";
  etag                      on;
  expires                   425d;
  .....

谢谢!

1 个答案:

答案 0 :(得分:2)

所有这些类型通常存储在名为mime.types的文件中,nginx.conf上下文中应包含它们,而不是执行这些广泛的条件,请检查{{ 1}}文件,并为每个扩展名添加一条记录(如果它不存在)以及它所代表的类型。

如果它们都已包含在内,请确保您的http包含该文件。