Redirect 重定向到https时,Nginx不从根目录提供服务
我第一次设置了一个Web服务器,并试图让HTTPS正常工作。我从Let's Encrypt获得了一个证书,该站点将加载HTTPS。我已通过以下模块设置配置,将所有HTTP重定向到HTTPS:Redirect 重定向到https时,Nginx不从根目录提供服务,redirect,ssl,nginx,https,Redirect,Ssl,Nginx,Https,我第一次设置了一个Web服务器,并试图让HTTPS正常工作。我从Let's Encrypt获得了一个证书,该站点将加载HTTPS。我已通过以下模块设置配置,将所有HTTP重定向到HTTPS: server { listen 80; server_name sulphate.me; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name sulp
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";
}
然而,当我连接到这个站点(sulfate.me)时,它只会给我一个“欢迎使用nginx!”页因为我将其设置为返回301,所以我的浏览器现在总是转到永久重定向
在添加这些块之前,它可以很好地从/var/www/html提供内容,但现在它根本不能。首先,为什么它不再为内容提供服务,其次,如果它不工作,我如何修复永久重定向
提前谢谢
编辑:当我删除了块并等待了一段时间后,它现在像往常一样提供内容。就在我重定向它的时候,它把事情搞砸了
编辑2:现在,当我试图通过地址栏手动转到HTTPS时,会出现错误521(Web服务器已关闭),而显然不是
编辑3:,Cloudflare加密设置(,)
我只是想澄清一下,当我收到521时,这些块不在我的配置中,它们现在已经被重新添加,原始问题仍然存在(不是从HTTPS上的root服务)。该错误来自该域的CloudFlare,而不是nginx。如果查看错误页面上的证书,您将看到它是CloudFlare的,而不是您的 在CloudFlare的免费计划中,它可能使用HTTP连接到您的源站,除非您在CloudFlare中启用了完整/严格的HTTPS。所以它是这样的: 浏览器--HTTPS-->CloudFlare--HTTP-->您的服务器 因此,问题是,您的服务器总是将请求视为HTTP,因为CloudFlare正在使用HTTP。您可能想做的是查看
X-Forwarded-For-Proto
。然后它会发出一个重定向,该重定向无效,因为浏览器已经认为它是SSL
还请记住,CloudFlare有您的HTTPS证书,因此在源站上设置一个证书并不重要,除非您使用完整/严格的HTTPS
你有几个选择
您必须用配置文件替换nginx default.conf,它才能工作。此外,在使用
return 301
删除永久重定向后,您必须清除浏览器缓存,您只需开始使用return 302
,它仍将重定向,但不会保存在浏览器缓存中。我相当确定我网站上的证书不是Cloudflare的。它归“科摩多CA有限公司”所有。另外,很抱歉没有弄清楚,在接收521时,重定向块不在配置中。我从多个来源进行了研究,发现这些块对于将HTTP连接永久重定向到HTTPS是正确的,但它不会服务于HTTPS的任何网页。谢谢(我在帖子中添加了链接)@我写了这个答案后,网站的行为发生了变化。是的,我意识到,我重新添加了将HTTP重定向到HTTPS的块。(这是我想要解决的原始问题:)@它仍然是CloudFlare证书。看看证书,它是发给“sni210448.cloudflaressl.com”的——CloudFlare使用Comodo作为其CA。Let's Encrypt证书将由Let's Encrypt中间层颁发。这不是您的let's encrypt证书。所以我仍然怀疑CloudFlare正在使用HTTP连接到您的源站。好的,好的。那么让我们加密证书是完全不相关的?还有,我将如何着手解决我真正想要解决的原始问题?