关于网友提出的“lnamp下apk下载,IE和chrome都可以正常下载,但是firefox显示乱码。”问题疑问,本网通过在网上对“lnamp下apk下载,IE和chrome都可以正常下载,但是firefox显示乱码。”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:lnamp下apk下载,IE和chrome都可以正常下载,但是firefox显示乱码。
描述:我的网站架构比较简单,所有的软件都在一台机器上。Nginx在前段监听80端口,负责做反向代理将接收到的请求转发给81端口的apache处理。Nginx可以解析php页面因为安装了php-fpm,apache也可以解析php页面,因为php作为模块加载在apache里。
这个是虚拟机(/usr/local/nginx/conf/vhosts/newdata.conf)的配置文件:
server {
listen 80;
server_name newdata.downloadatoz.com;
## send request back to apache ##
location / {
proxy_pass http://127.0.0.1:81;
#Proxy Settings
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503
http_504;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 512k;
proxy_buffers 32
512k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 512k;
}
}
这个是apache虚拟机(/etc/httpd/conf/vhosts/newdata.conf)的配置文件
DocumentRoot /home/wwwroot
ServerName newdata.downloadatoz.com
UseCanonicalName Off
ErrorLog logs/newdata.downloadatoz.com_error_log
CustomLog logs/newdata.downloadatoz.com_access_log common
# Options Indexes
FollowSymLinks
Options None
AllowOverride all
Order Allow,Deny
Allow from all
上面就是我的架构,现在的情况是我下载这个网站下的apk时,用ie和chrome下载都是正常的,可以下载到apk。但是用firefox下载就是乱码了。我也试过 "IP:81/apk文件名" 来下载,这个可以正常下载。我猜测问题还是出在firefox和nginx的处理机制上。
因为出现这样的问题所以我就尝试把apache去掉了,直接用nginx作处理请求。这种情况下用三种浏览器都可以正常下载。
我哪里叙述的不清楚,前各位辈在跟我沟通。谢谢各位前辈。
解决方案1:引用来自“eechen”的评论
对于没有在mime.types定义的文件类型(比如apk),Nginx会默认当做Content-Type: application/octet-stream来处理,用curl -I测试可见.
http {
include mime.types;
default_type application/octet-stream;
}
确定你没有设置 default_type 'text/plain'; 否则当mime.types里没有匹配时,会把未知类型的文件当做text/plain返回给浏览器.
解决方案2:
的确没有设置default_type 'text/plain'; 但是在gzip类型里添加了有'text/plain'这一项,后来我把这个从gzip里去掉,然后就可以正常下载了。使用firefox的firebug调试可以发现服务器端(nginx)会把apk文件的传输类型识别为'text/plain'然后进行压缩,最后就出现了乱码。当我把'text/plain'从压缩类型里去掉时就可正常下载了,但是服务器端响应 请求文件的类型还是‘text/plain’。为什么在gzip里掉“text/plain”后就可以正常下载了呢?这里面的原理还是不太明白,希望前辈可以讲讲。
解决方案3:对于没有在mime.types定义的文件类型(比如apk),Nginx会默认当做Content-Type: application/octet-stream来处理,用curl -I测试可见.
http {
include mime.types;
default_type application/octet-stream;
}
确定你没有设置 default_type 'text/plain'; 否则当mime.types里没有匹配时,会把未知类型的文件当做text/plain返回给浏览器.
以上介绍了“lnamp下apk下载,IE和chrome都可以正常下载,但是firefox显示乱码。”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1329856.html