Question

ERR_TOO_MANY_REDIRECTS After Updating to Ubuntu 16.04

Hello,

After updating to Ubuntu 16, my website now has an issue with ERR_TOO_MANY_REDIRECTS. The website worked fine before the upgrade (It is running Drupal). NGINX -t returns the syntax is okay and the test was successful. Recovering from a backup also does not fix the problem.

Below I have my sites enabled file

server {
    server_name example.com www.example.com;
    #return 301 $scheme://www.example.com$request_uri;
    root /root/to/dir;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # Very rarely should these ever be accessed outside of your lan
    location ~* \.(txt|log)$ {
        allow 192.168.0.0/16;
        deny all;
    }

    location ~ \..*/.*\.php$ {
    #    return 403;
    }

    location ~ sites/default/files/.*php {
    #	return 403;
    }

    location ~ ^/sites/.*/private/ {
    #    return 403;
    }

    # Allow "Well-Known URIs" as per RFC 5785
    location ~* ^/.well-known/ {
        allow all;
    }

    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    location ~ (^|/)\. {
        return 403;
    }

    location / {
        # try_files $uri @rewrite; # For Drupal <= 6
         try_files $uri /index.php?$query_string; # For Drupal >= 7
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    location ~* /sites/.*/files/styles/ {
            access_log off;
            expires 30d;
            try_files $uri @rewrite;
    }

    # Don't allow direct access to PHP files in the vendor directory.
    location ~ /vendor/.*\.php$ {
        deny all;
        return 404;
    }

    # In Drupal 8, we must also match new paths where the '.php' appears in the middle,
    # such as update.php/selection. The rule we use is strict, and only allows this pattern
    # with the update.php front controller.  This allows legacy path aliases in the form of
    # blog/index.php/legacy-path to continue to route to Drupal nodes. If you do not have
    # any paths like that, then you might prefer to use a laxer rule, such as:
    #   location ~ \.php(/|$) {
    # The laxer rule will continue to work if Drupal uses this new URL pattern with front
    # controllers other than update.php in a future release.
    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
    }

    # Fighting with Styles? This little gem is amazing.
    #location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6
    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
        try_files $uri @rewrite;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

I understand it is in an endless loop of redirects but I cannot find the culprit.

Any help would be greatly appreciated

Thanks

Subscribe
Share

My error log is displaying this

"2017/09/13 07:21:33 [error] 3478#3478: *235 directory index of "/root/to/dir/" is forbidden, client: 100.00.000.000, server: _, request: "HEAD / HTTP/1.0"

Which looks like it would be a permissions issue but the directory is set to 755


Submit an answer
You can type!ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Hello,

Is the /root/to/dir directory also owned by the Nginx user?

You can find the user that Nginx is running as with the following command:

ps aux | grep -i nginx

The default one is www-data, so if this is the case for you, you can change the owner of the directory with:

sudo chown www-data: /root/to/dir

Best,

Bobby