我的网站在使用 nginx https 后出现许多重定向循环

我的网站在使用 nginx https 后出现许多重定向循环

我最近为我的网站添加了 SSL 证书。它能正常工作,但有时在浏览器中会出现“重定向循环过多”的错误。我对服务器没有太多经验,所以我按照在线指南进行设置。

谢谢大家帮助我。

请帮我!

这是我的配置


 upstream tomcat_server {
  server 127.0.0.1:8084 fail_timeout=0;
}

server {
  listen 80;
  listen [::]:80;
  server_name example.com www.example.com;
  rewrite ^(.*) https://example.com$1 permanent;
}

server {
  listen 443 ssl default_server;
  server_name     example.com www.example.com;  
  # access_log off;
  access_log /root/example.com/nginx-logs/access.log;
  # error_log off;
  error_log /root/example.com/nginx-logs/error.log;
  root            /root/Apache_Tomcat_7/webapps/ROOT;

# SSL
  ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
  ssl_prefer_server_ciphers on; 
  ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AVS128:EECDH+AES256:RSA+AES256:EESCD+3DES:RSA+3DES:!MD5;

        # Improve HTTPS performance with session resumption
        ssl_session_cache shared:SSL:50m;
        ssl_session_timeout 1d;

        # DH parameters
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;
        # Enable HSTS
        add_header Strict-Transport-Security "max-age=31536000" always;

  location / {

        # Forward SSL so that Tomcat knows what to do
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://tomcat_server;
        proxy_set_header X-Forwarded-Proto https;

        proxy_redirect off;
        proxy_connect_timeout      240;
        proxy_send_timeout         240;
        proxy_read_timeout         240;
  }
}

答案1

你可以参考我在这里的回答:

https://serverfault.com/a/938422/494728

据我所知,你不仅开始在服务器上使用 https,还制定了从 http->https 的重定向规则。因此,如果客户端请求http://example.com它将重定向到https://example.com

这是有道理的,但我会简化您的配置,而使用 (301) 重定向规则。

server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; } 另一方面,您的位置部分可能非常简单,只需将您的网站位置指定为目录,无需将用户重定向到 http,因为这会导致循环。

您还可以参考我最近的以下回复:

https://serverfault.com/a/940213/494728

相关内容