我试图通过docker部署Laravel(php)应用程序,这有点不合时宜。一切都很好,直到我尝试通过Lets Encrypt使用SSL证书,这会触发我无法解决的重定向循环。
upstream app {
server app1520925178:80;
}
server {
listen 80 default_server;
server_name app.example.com;
# handle future LE refreshes
location /.well-known {
root /var/www/html;
try_files $uri $uri/ =404;
}
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl default_server;
server_name app.example.com;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 24h;
keepalive_timeout 300s;
ssl on;
ssl_certificate /etc/letsencrypt/live/app.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/app.example.com/privkey.pem;
charset utf-8;
location / {
#include proxy_params;
proxy_pass http://app;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
# Handle Web Socket connections
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
非常感谢任何指导。
编辑:在此帖子创建后几分钟“随机”开始工作。仍然没有100%确定为什么需要时间来“宣传”,如果有人对此有所了解,我会很感激。
答案 0 :(得分:1)
如果您将Cloudflare用作DNS服务(未在其上注册域,而是通过其管理DNS记录)并启用了Cloudflare的保护(橙色云符号),则可能会发生这种情况。
请注意this support article by Cloudflare中的以下段落:
如果原始服务器恰好配置为将HTTP请求重定向到HTTPS,则将服务器响应返回到Cloudflare进行加密,并且由于Cloudflare期望HTTP流量,因此它将继续重新发送相同的请求,从而导致重定向循环。这会导致浏览器显示“页面无法正确重定向”或“ ERR_TOO_MANY_REDIRECTS”错误。
因此,灵活的SSL最有可能是您遇到的问题。您可以通过转到Cloudflare控制面板中的加密页面并将SSL模式设置为“完全(严格)”来关闭此功能:
这解决了我在Apache系统上的问题,但是我非常确信这与nginx的问题相同。
答案 1 :(得分:-1)
将加密设置更改为“完全(严格)”可能会有所帮助: