设置由nginx提供的.apk文件的标头

时间:2017-09-18 18:23:42

标签: nginx header

在我的服务器块中我有

def default_data_type_as_string
    @xlsx_package = Axlsx::Package.new
    @workbook = @xlsx_package.workbook
    @worksheet = @workbook.add_worksheet(:name => "Introduction")
    default_style = @workbook.styles.add_style({ format_code: '@' })
    row_data_array = ['1', '2%', '3$']
    @worksheet.add_row row_data_array, :style => [nil, default_style, nil]
    @xlsx_package.serialize('default_data_type_as_string.xlsx')
end

如果删除内部位置块,我可以访问APK文件(以及所有其他文件)。

添加块后,任何.apk文件都会返回404.如何为APK文件添加标题?

注意:其他文件类型的内容类型由附带的mime.types很好地处理,但即使我按照How to download ".apk" as ".apk"? (not as ".zip")https://blog.mypapit.net/2015/08/how-to-set-apk-mime-type-for-nginx-web-server.html所述添加APK文件的行,它也仅返回内容 - apk文件的文本类型/ html。

3 个答案:

答案 0 :(得分:0)

你还需要在apk块中拥有proxy_pass。 Nginx不像编程语言那样工作,因此您不会从父块执行任何操作。

还用于使用default_type指令

设置内容类型
   location / {
      proxy_pass http://echocdn;
      include /etc/nginx/mime.types;
      #proxy_pass http://127.0.0.1:8082;
      add_header Cache-Control "max-age=31536000, private, no-transform, no-cache";
      location ~* \.apk$ {
         default_type application/vnd.android.package-archive;
         add_header Content-Type application/vnd.android.package-archive;
         add_header Content-Disposition "attachment";
         proxy_pass http://echocdn;
      }
   }

您甚至可以使用if

处理此问题
   location / {
      proxy_pass http://echocdn;
      include /etc/nginx/mime.types;
      #proxy_pass http://127.0.0.1:8082;
      add_header Cache-Control "max-age=31536000, private, no-transform, no-cache";
      if ($request_uri ~* \.apk$) {
         default_type application/vnd.android.package-archive;
         add_header Content-Type application/vnd.android.package-archive;
         add_header Content-Disposition "attachment";
      }
   }

答案 1 :(得分:0)

也许最好不要直接设置标题,因为这会导致双重内容类型。

但是如果您在location-block类型中声明它,它也可以正常工作。

看看:

  location ~* \.apk$ {
    types {
      application/vnd.android.package-archive apk;
    }

    add_header Content-Disposition "attachment";
  }

答案 2 :(得分:0)

尝试一下:

chmod +x chromedriver_linux64

/ tmp / app是您的APK文件的完整路径。