Nginx的HTTP / HTTPS – Http似乎redirect到HTTPS的所有的时间

我用我的ubuntu 10.04 / nginx 1.2.3服务器,这真的很奇怪的行为。 基本上我今天早上更改了SSL证书。 从那以后,它在所有的应用程序上都performance得很怪异。 Godaddy报告说HTTPS / SSL设置是正确的。

当我尝试一个页面时,它仍然正常工作,当我使用HTTPS。 但是当我尝试使用HTTP nginx报告错误:

400 Bad Request The plain HTTP request was sent to HTTPS port 

经过几个小时在谷歌环顾四周,我已经尝试了不同的设置(原来我的设置长时间工作正常,我只是更新证书)

我发现一半的解决scheme添加到我的configuration:

error_page 497 $ request_uri;

真正奇怪的是,当我使用这个设置:

 server { listen 80; server_name john.johnrocks.eu; access_log /home/john/envs/john_prod/nginx_access.log; error_log /home/john/envs/john_prod/nginx_error.log; location / { uwsgi_pass unix:///home/john/envs/john_prod/john.sock; include uwsgi_params; } location /media { alias /home/john/envs/john_prod/johntab/www; } location /adminmedia { alias /home/john/envs/john_prod/johntab/www/adminmedia; } } 

在使用HTTP时,我仍然有同样的错误(虽然这里没有设置HTTPS)?

我越来越疯狂了!

**更新

即使使用这个configuration:

 server { listen 80; server_name john.johnrocks.eu; access_log /home/john/envs/john_prod/nginx.access.log; location / { root /home/john/envs/john_prod/johntab/www; index index.html index.htm; } } 

我得到错误400(简单的HTTP请求被发送到HTTPS端口)在我尝试加载的一切。

我不知道400错误,但如果您在以前的configuration中有301(永久)redirect,则浏览器可能仍将此redirect存储在caching中,并且不检查原始内容。 也许清除caching可能会有所帮助。

所以我发现问题是什么。 问题来自nginx如何加载虚拟主机configuration。 如果你看看nginx.conf,你会发现这一行

 include /etc/nginx/sites-enabled/*; 

所以这将所有的“虚拟主机”以随机顺序加载到主要的nginx.conf中。 所以发生了什么是错误是在别的地方,在另一个虚拟主机..它使所有虚拟主机失败基本上(没有错误被检测到Nginx的,它本身不是一个错误,但一个错误的configuration)。

于是我删除了所有启用了网站的虚拟主机,然后把它们一个接一个地重新加载,重新加载nginx,并且每次testing这个网站,直到我把它们全部正确的然后voilà