为什么我必须从 Flexible 更改为 Full 才能解决我使用 cloudflare 的 "too many redirects" 问题?
Why do I have to change from Flexible to Full to solve my "too many redirects" problem with cloudflare?
我刚刚建立了一个新网站。
设置完所有内容(带 LetsEncrypt 的 SSL)后,存在重定向问题。
我花了好几个小时才发现我可以通过在我的 cloudflare 设置中从 Flexible 切换到 Full 来解决它。但为什么?有人可以给我解释一下细节吗?
Nginx 配置文件:
server {
server_name mysite.com;
root /root/mysite;
index index.html;
location / {
try_files $uri $uri/ =404;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mysite.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = mysite.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name mysite.com;
listen 80;
return 404; # managed by Certbot
}
当设置配置为 Flexible 模式时,表示连接遵循此配置:
- 在最终用户和 Cloudflare 之间,使用 HTTPS
- 在 Cloudflare 和您的原始服务器之间,使用 HTTP
如果源不支持 HTTPS,但您仍希望最终用户安全地连接到 Cloudflare,这会很有用。建议始终使用完全有效的证书启用端到端 TLS。
如果您的来源配置为将 HTTP 请求重定向到 HTTPS,那么我们将进入一个循环,因为重定向的 HTTPS 请求返回到 Cloudflare,然后 Cloudflare 向来源发出 HTTP 请求...然后返回到哪里开始了!
在你的情况下,你的源服务器上似乎有一个完全有效的 Let's Encrypt 证书,所以你应该使用 Full (Strict) 。还提供了更多信息 here
我刚刚建立了一个新网站。
设置完所有内容(带 LetsEncrypt 的 SSL)后,存在重定向问题。
我花了好几个小时才发现我可以通过在我的 cloudflare 设置中从 Flexible 切换到 Full 来解决它。但为什么?有人可以给我解释一下细节吗?
Nginx 配置文件:
server {
server_name mysite.com;
root /root/mysite;
index index.html;
location / {
try_files $uri $uri/ =404;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mysite.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = mysite.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name mysite.com;
listen 80;
return 404; # managed by Certbot
}
当设置配置为 Flexible 模式时,表示连接遵循此配置:
- 在最终用户和 Cloudflare 之间,使用 HTTPS
- 在 Cloudflare 和您的原始服务器之间,使用 HTTP
如果源不支持 HTTPS,但您仍希望最终用户安全地连接到 Cloudflare,这会很有用。建议始终使用完全有效的证书启用端到端 TLS。
如果您的来源配置为将 HTTP 请求重定向到 HTTPS,那么我们将进入一个循环,因为重定向的 HTTPS 请求返回到 Cloudflare,然后 Cloudflare 向来源发出 HTTP 请求...然后返回到哪里开始了!
在你的情况下,你的源服务器上似乎有一个完全有效的 Let's Encrypt 证书,所以你应该使用 Full (Strict) 。还提供了更多信息 here