使用 Nginx 的 ERR_TOO_MANY_REDIRECTS
Posted
技术标签:
【中文标题】使用 Nginx 的 ERR_TOO_MANY_REDIRECTS【英文标题】:ERR_TOO_MANY_REDIRECTS with nginx 【发布时间】:2018-03-06 21:53:47 【问题描述】:我想将我的所有http
流量重定向到https
。我正在使用letsencrypt
。我在网上看到return 301 https://$server_name$request_uri;
会将所有到我网站的流量重定向到https
,但结果却是ERR_TOO_MANY_REDIRECTS
。
没有上面提到的声明一切正常,但是我必须在 URL 中特别指定https
。这是我的/etc/nginx/sites-available/default
文件:
server
listen 80 default_server;
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/mywebsite.me/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mywebsite.me/privkey.pem;
root /home/website/mywebsite/public;
index index.html index.htm index.php;
server_name mywebsite.me www.mywebsite.me;
return 301 https://$server_name$request_uri;
location /
try_files $uri $uri/ /index.php$is_args$args;
location ~ \.php$
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
我哪里错了?
【问题讨论】:
【参考方案1】:就我而言,它是 Cloudflare。我不得不更改为完全 SSL 加密
【讨论】:
就是这样!谢谢! 你是英雄。 一读到 CloudFlare,我就像“天哪,我完全忘记了这一点”。谢谢你提醒我! 是的,我使用 Cloudflare,但是当你有多个服务器块时,它不会强制 redr 到 HTTPS 仍然允许 HTTP 请给这家伙一枚勋章! :D【参考方案2】:将您的配置更改为以下
server
listen 80 default_server;
server_name mywebsite.me www.mywebsite.me;
return 301 https://$server_name$request_uri;
server
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/mywebsite.me/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mywebsite.me/privkey.pem;
root /home/website/mywebsite/public;
index index.html index.htm index.php;
server_name mywebsite.me www.mywebsite.me;
location /
try_files $uri $uri/ /index.php$is_args$args;
location ~ \.php$
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
您当前的配置在 http 和 https 上都重定向到 https。因此,由于 return 语句,它变成了一个无限循环。仅当连接为 http 时才需要返回语句。所以你把它分成两个服务器块
【讨论】:
【参考方案3】:我有同样的问题。我发现了很多关于它的问题/答案和文章,但没有任何帮助。 然后我尝试从不同的浏览器访问我的网站,它工作得很好! 从我的 chrome 浏览器中删除缓存解决了它。
所以 - 请记住,当您尝试不同的解决方案来清除缓存时
【讨论】:
以上是关于使用 Nginx 的 ERR_TOO_MANY_REDIRECTS的主要内容,如果未能解决你的问题,请参考以下文章