Nginx 与 http/https - Http 似乎始终重定向到 https

Nginx 与 http/https - Http 似乎始终重定向到 https

我的 ubuntu 10.04 / nginx 1.2.3 服务器出现了这种非常奇怪的行为。基本上,我今天早上更改了 SSL 证书。从那时起,它在所有应用程序上的行为都很奇怪。Godaddy 报告 HTTPS/SSL 设置正确。

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

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

在谷歌上搜索了几个小时后,我尝试了不同的设置(虽然我的设置最初长期运行正常,但我刚刚更新了证书)

通过将其添加到我的配置中,我找到了一半的解决方案:

错误页面 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 设置任何内容)??

我快要疯了!

**更新

即使有这样的配置:

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 端口)。

答案1

我不知道 400 错误是怎么回事,但如果你之前的配置中有 301(永久)重定向,浏览器可能仍会将此重定向存储在缓存中,而不会检查原始重定向。也许清除缓存可能会有所帮助。

答案2

所以我找到了问题所在。问题出在 nginx 如何加载 vhosts 配置。如果你查看 nginx.conf,你会发现这一行

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

因此,这会将所有“vhost”以随机顺序加载到主 nginx.conf 中。因此,错误发生在其他地方,在另一个 vhost 中……并且它基本上导致所有 vhost 失败(nginx 没有检测到任何错误,它本身不是错误,而是配置错误)。

所以我删除了所有启用站点的虚拟主机,然后逐个放回去,每次都重新加载 nginx 并测试站点,直到我把它们全部弄好,然后就好了

相关内容