当在端口80请求时,nginx下载空文件(而不是redirect到端口443)

我的nginxnetworking服务器不行,他应该怎么做。 所有到服务器的http://请求都应该使用http 301redirect到https://,过去几天工作正常,直到停止工作而没有任何改变。

Nginx返回一个types为“application / octet-stream”的空文件和下面的内容(在sublime中可读):

0000 1204 0000 0000 0000 0300 0000 8000 0400 0000 0000 0500 ffff ff00 0004 0800 0000 0000 7fff 0000 0000 0807 0000 0000 0000 0000 0000 0000 01 

首先,我试图删除该行

 default_type application/octet-stream; 

从我的nginx.conf,但它没有帮助。

http-response头返回

 Status:       

我从http://到https://的301redirect的服务器块如下所示

 server { listen 80; listen [::]:80; server_name my.tld www.my.tld; return 301 https://$server_name$request_uri; } 

当Nginx收到一个http://请求时,不会logging任何内容。 (/var/log/nginx/error.log | /var/log/nginx.access.log)。 也是PHP7.0-Fpm。

所需的一切都安装,更新和升级。 重新启动服务和服务器本身并没有帮助。

这里是curl的输出-v http://my.tld/

 * Connected to my.tld (123.123.123.123) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.38.0 > Host: my.tld > Accept: */* > < HTTP/1.1 200 OK < Mime-Version: 1.0 < Date: Thu, 06 Oct 2016 06:10:53 GMT < X-Transformed-From: HTTP/0.9 < Transfer-Encoding: chunked < Connection: keep-alive < * Connection #0 to host my.tld left intact 

为什么nginx应该返回301永久redirect时返回200 OK?

我没有改变任何东西,它使用相同的configuration…我希望有人可以帮助我:-(。它可能是一个DNS问题?

最好,Unkn0wn0x

X-Transformed-From标题看起来很可疑。 如果nginx真的在监听端口80,或者有其他程序正在监听端口,请检查netstat -lnp命令。

您的系统可能会受到影响。 在这种情况下,您需要从备份中恢复并更新系统,然后才能联机。

我没有find任何关于X-Transformed-From头的信息。 我的nginx正在监听以下端口:

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10282/nginx -g daem tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 10282/nginx -g daem tcp6 0 0 :::443 :::* LISTEN 10282/nginx -g daem tcp6 0 0 :::80 :::* LISTEN 10282/nginx -g daem

如果我请求https:// my.tld,然后http:// my.tld,它就像一个魅力。 在移动设备上,如果我通过隐身/私密标签http://my.tld请求,它会立即redirect到https://。

我尝试从http://mxtoolbox.com/与我的域的工具“HTTP查找”,它返回一个错误&#xFF1A;

 HTTP connect The server committed a protocol violation. Section=ResponseStatusLine (http://my.tld) 

我检查过是否有一些防火墙规则(ufw)或类似的东西阻塞了端口80上的请求,但事实并非如此。

ufw状态

 80 ALLOW Anywhere 80 (v6) ALLOW Anywhere (v6) 443 ALLOW Anywhere 443 (v6) ALLOW Anywhere (v6) 

在my.tld只有几个HTML文件,没有PHP或类似的。

mxtoolbox错误说,它无法连接到我的服务器(http:// /端口80),但它是可能的。 DNS设置也很好。

我很茫然 :-(

问候,Unkn0wn0x

我已经解决了这个问题。 这是一个configuration文件从一个子域有一个自己的根目录configuration。 从子域的configuration文件了

 listen 80 http2; listen [::]:80 http2 

这影响了整个networking服务器没有任何错误/日志文件或类似(nginx -t也正面)。 在重新安装nginx并逐步备份configuration文件之后,我发现这个错误。

感谢您的支持。

最好,Unkn0wn0x

添加这个只是因为这是唯一的一个页面显示了相关主题的谷歌search。

我有同样的问题,最后发现,决议是一样的,你已经概述了。

显然指定http2listen 80 (没有ssl)是没有bueno。 而且它更加令人困惑,因为它滑过了所有的nginxconfiguration检查。