nginx - 内容类型响应 header 是否必要?

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

我正在将各种类型的内容(gif、jpeg、png、css、pdf)上传到 amazon s3。然后我将 Nginx 放在 S3 前面,这样我就可以重写 url 并让 azure cdn 拉取它们。

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

例如: 当我在 Chrome Web 检查器中查看此网址时,我没有看到返回内容类型 header 。 http://wiki.nginx.org/local/nginx-logo.png

我们终于到了浏览器可以自己确定内容类型的地步了吗?

添加内容类型 header 是否有任何特定的性能优势?

根据文件扩展名设置内容类型的快速 nginx 规则是什么? 例如,如果 url 是 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;
  .....

谢谢!

最佳答案

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

如果它们都已包含,请确保您的 nginx.conf 包含该文件。

关于nginx - 内容类型响应 header 是否必要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23281085/

相关文章:

java - AWS Elastic BeansTalk Nginx 超时 504 错误网关 - Java Servlet AsyncContext

python - 使用 python urllib2 获取位置 header 的值

http - 获取 HTTP 响应的所有 header 并在下一个 HTTP 请求中发回

php - 检查上传的文件是否为 csv 格式

c - 在 cURL 中为 AMFPHP 指定内容类型

asp.net-mvc - "upstream prematurely closed connection while reading response header from upstream"在 Ubuntu MVC4 应用程序上使用 nginx、PostgreSQL 和 Mono

c# - 如何在 Ubuntu 上使用 NginX 提供 Blazor 应用程序

php - W7 Pro IIS 7.5 覆盖 PHP 位置 : Header

德鲁帕尔 6 : Drupal Themer gives same candidate name for different type of content types

php - Nginx/SSI独立分片缓存