gpt4 book ai didi

redirect - 重定向到 https 时 Nginx 不从 root 服务

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:50 25 4
gpt4 key购买 nike

我是第一次设置网络服务器,并尝试让 HTTPS 正常工作。我从 Let's Encrypt 获得了证书,网站将以 HTTPS 加载。我已将配置设置为使用以下 block 将所有 HTTP 重定向到 HTTPS:

server {
listen 80;
server_name sulphate.me;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl;
server_name sulphate.me;
ssl_certificate /etc/letsencrypt/live/sulphate.me/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/sulphate.me/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000";
}

但是,当我连接到该站点 (sulphate.me) 时,它只显示“欢迎使用 nginx!”页。因为我将其设置为返回 301,所以我的浏览器现在总是转到永久重定向。

在添加这些 block 之前,它可以很好地提供来自/var/www/html 的内容,但现在完全不会了。首先,为什么它不再提供内容,其次,如果它不起作用,我该如何修复永久重定向?

提前致谢。

编辑:当我移除 block 并稍等片刻时,它现在照常提供内容。就在我重定向它时,它搞砸了。

编辑 2:现在,当我尝试通过地址栏手动转到 HTTPS 时,它给我错误 521(Web 服务器已关闭),但显然没有。

编辑 3:Certificate Information , Cloudflare 加密设置 ( 1 , 2 ), Nginx SSL-Related Config Settings

澄清一下,当我收到 521 时,这些 block 不在我的配置中,它们现在已被重新添加并且原始问题仍然存在(不是在 HTTPS 上从根服务)。

最佳答案

该错误来自该域的 CloudFlare,而不是 nginx。如果您查看错误页面上的证书,您会发现它是 CloudFlare 的,而不是您的。

在 CloudFlare 的免费计划中,除非您在 CloudFlare 中启用了完整/严格 HTTPS,否则它可能会使用 HTTP 连接到您的来源。所以它是这样的:

Browser ---HTTPS---> CloudFlare ---HTTP---> Your Server.

所以,问题是,您的服务器总是将请求视为 HTTP,因为那是 CloudFlare 使用的。您可能想要做的是查看 X-Forwarded-For-Proto。然后它发出重定向,该重定向无效,因为浏览器已经认为它是 SSL。

另请记住,CloudFlare 拥有您的 HTTPS 证书,因此除非您使用 Full/Strict HTTPS,否则在源上设置一个证书并不重要。

您有几个选择。

  1. 使用 X-Forwarded-For-Proto做重定向。但是 CloudFlare 可以 already do this for you .在这种情况下,您的 nginx 安装根本不会执行 HTTPS。不完全推荐这样做,因为这意味着边缘和源点之间的流量未加密。

  2. 在 CloudFlare 中使用完整/严格 SSL,以便它可以在其代理和源站之间执行 HTTPS。

关于redirect - 重定向到 https 时 Nginx 不从 root 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41431314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com