2017-09-18 27 views
0

服務。在我的服務器塊的apk文件中設置的頭我有由nginx的

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

如果我刪除了內部位置塊,我能達到的APK文件(和所有其他文件)。

隨着添加的塊,任何.apk文件返回404.如何添加APK文件的標題?

注:內容類型爲其他文件類型是由包含的mime.types處理好了,但即使我添加行APK文件所描述的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它只返回的內容類型的文本/ HTML的APK文件。

+0

你需要有APK塊也在裏面proxy_pass處理這個問題。 –

回答

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; 
     } 
    } 

設置內容類型,你甚至可以與如果

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"; 
     } 
    } 
+0

在內部塊中添加proxy_pass指令可以取消404 - 現在可以找到該文件,但Content-Type仍然是text/html。 –

+0

直到我刪除了default_type指令(日誌表示它不能在那裏使用),if-directive選項纔會啓動。沒有它,它的行爲與其他選項相同 - 文件已收到但內容類型未設置。 –

+0

但內容配置設置爲? –