ERR_TOO_MANY_REDIRECTS Nginx - PullRequest
       22

ERR_TOO_MANY_REDIRECTS Nginx

0 голосов
/ 20 января 2020

Я только что обновил свою подписку Let's Encrypt с помощью команды

sudo /usr/local/bin/certbot-auto --nginx

, что дало ошибку, которая была устранена путем удаления строки

# proxy_redirect http:// https://;

из / etc / nginx / sites- доступный / по умолчанию, который я думал, это хорошо, так как он все равно выглядит для меня как комментарий. Однако теперь мой веб-сайт больше не загружается и выдает ошибку

This page isn’t working 
example.com redirected you too many times.
Try clearing your cookies.
ERR_TOO_MANY_REDIRECTS

Я попытался добавить строку обратно, но это не помогло. Любые мысли о том, что могло пойти не так?

здесь мой / etc / nginx / sites-available / default

server {
    listen 80 default_server;

    server_name example.com www.example.com;

    return 301 https://$server_name$request_uri;
  }

server {

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    # Settings to serve static files
    location /static/  {

        # Example:
        # root /full/path/to/application/static/file/dir;
        root /var/www/example/app/;

        location ~*  \.(jpg|woff|jpeg|png|gif|ico|css)$ {
            expires 30d;
        }

        location ~*  \.(js)$ {
            expires 1d;
        }

        # we do not cache html, xml or json
        location ~* \.(?:manifest|appcache|html?|xml|json)$ {
            expires -1;
            # access_log logs/static.log; # I don't usually include a static log
        }

        location ~*  \.(pdf)$ {
            expires 30d;
        }
    }

    # Serve a static file (ex. favico)
    # outside /static directory
    location = /favico.ico  {

        root /app/favico.ico;
        gzip_static on;
    }

    # Proxy connections to the application servers
    # app_servers
    location / {
        proxy_connect_timeout 300s;
        proxy_read_timeout 300s;
        proxy_pass         http://app_servers;
        proxy_redirect     off;
        # proxy_redirect http:// https://;
        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;
    }
}

вот мой /etc/nginx/nginx.conf

worker_processes 1;

events {
   worker_connections 1024;
}

http {
   include /etc/nginx/mime.types;

   sendfile on;

   gzip              on;
   gzip_http_version 1.1;
   gzip_comp_level   5;
   gzip_proxied      any;
   gzip_min_length   256;
   gzip_vary         on;
     gzip_types
     application/atom+xml
     application/javascript
     application/json
     application/rss+xml
     application/vnd.ms-fontobject
     application/x-font-ttf
     application/x-web-app-manifest+json
     application/xhtml+xml
     application/xml
     font/opentype
     image/svg+xml
     image/x-icon
     text/css
     text/plain
     text/x-component;

   # Configuration containing list of application servers
   upstream app_servers {

       server 127.0.0.1:8080;
       # server 127.0.0.1:8081;
       # ..
       # .

   }

   # Configuration for Nginx
   server {

       # Running port

   # This is required by let's encrypt to recognize the domain (see also let's encrypt lines below)
   server_name example.com www.example.com;

       return 301 https://$server_name$request_uri;

   listen 443 ssl; # managed by Certbot
   ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # managed by Certbot
   ssl_certificate_key /etc/letsencrypt/live/www.example.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 {

   listen 443 ssl; # managed by Certbot
       ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # managed by Certbot
       ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # managed by Certbot
       include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

   # add Strict-Transport-Security to prevent man in the middle attacks
       add_header Strict-Transport-Security "max-age=31536000";

       ssl_dhparam /etc/ssl/certs/dhparam.pem;

       # Settings to serve static files 
       location /static/  {

           # Example:
           # root /full/path/to/application/static/file/dir;
           root /var/www/example/app/;

           location ~*  \.(jpg|woff|jpeg|png|gif|ico|css)$ {
               expires 30d;
           }

       location ~*  \.(js)$ {
       expires 1d;
       }

           # we do not cache html, xml or json
    location ~* \.(?:manifest|appcache|html?|xml|json)$ {
               expires -1;
               # access_log logs/static.log; # I don't usually include a static log
           }

           location ~*  \.(pdf)$ {
               expires 30d;
           }
   }

       # Serve a static file (ex. favico)
       # outside /static directory
       location = /favico.ico  {

           root /app/favico.ico;
       gzip_static on;
       }

   # Proxy connections to the application servers
       # app_servers
       location / {
       proxy_connect_timeout 300s;
           proxy_read_timeout 300s;
       proxy_pass         http://app_servers;
           proxy_redirect     off;
           # proxy_redirect http:// https://;
       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;
       }
}

server {
if ($host = www.example.com) {
    return 301 https://$host$request_uri;
} # managed by Certbot


if ($host = example.com) {
    return 301 https://$host$request_uri;
} # managed by Certbot


    listen 80;
server_name example.com www.example.com;
return 404; # managed by Certbot
}}

Я также использовал http://www.redirect-checker.org/, который дал

Result
https://www.benty-fields.com
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently
https://benty-fields.com/
301 Moved Permanently

Problems found:
Too many redirects. Please try to reduce your number of redirects for https://www.benty-fields.com. Actually you use 19 Redirects. Ideally you should not use more than 3 Redirects in a redirect chain. More than 3 redirections will produce unnecessary load on your server and reduces speed, which ends up in bad user experience.

, так как / etc / nginx / sites-available / default включает в себя / etc / letsencrypt / options -ssl- nginx .conf вот содержимое этого файла

# This file contains important security parameters. If you modify this file
# manually, Certbot will be unable to automatically provide future security
# updates. Instead, Certbot will print and log an error message with a path to
# the up-to-date file that you will need to refer to when manually updating
# this file.

ssl_session_cache shared:le_nginx_SSL:10m;
ssl_session_timeout 1440m;

ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers off;

ssl_ciphers "**";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...