Client login looping on authorize account

I have just performed a clean install of Nextcloud 15 on a Ubuntu Server 18.04 VM with NGINX as the webserver. I use a pfsense firewall, and am using the HAProxy to handle traffic to and from the VM. The SSL certificates are installed on the HAProxy, not the nginx server. I am able to access the web interface and webdav without issues, however when I attempt to login with any of the clients (I have tried Windows, ios, and Android) it will not login. I get the screen that asks to connect your account by logging in, from there I can use my credentials, and it logins and asks to authorize the device.

But it just goes back to the original login page.

The above happens no matter what client I try and use. This is my config for nginx (Note: I have replaced sensitive info with the word ommitted):

server {
	listen 80;
	server_name ommitted;

	# Add headers to serve security related headers
	add_header X-Content-Type-Options nosniff;
	add_header X-XSS-Protection "1; mode=block";
	add_header X-Robots-Tag none;
	add_header X-Download-Options noopen;
	add_header X-Permitted-Cross-Domain-Policies none;
	add_header Referrer-Policy no-referrer;
	
	# Remove X-Powered-By, which is an information leak
	fastcgi_hide_header X-Powered-By;


	# Path to the root of your installation
	root /usr/share/nginx/nextcloud/;

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

	# The following 2 rules are only needed for the user_webfinger app.
	# Uncomment it if you're planning to use this app.
	#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
	#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
	# last;

	location = /.well-known/carddav {
		return 301 $scheme://$host/remote.php/dav;
	}
	location = /.well-known/caldav {
	   return 301 $scheme://$host/remote.php/dav;
	}

	# set max upload size
	client_max_body_size 512M;
	fastcgi_buffers 64 4K;

	# Enable gzip but do not remove ETag headers
	gzip on;
	gzip_vary on;
	gzip_comp_level 4;
	gzip_min_length 256;
	gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
	gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
	

	# Uncomment if your server is build with the ngx_pagespeed module
	# This module is currently not supported.
	#pagespeed off;

	error_page 403 /core/templates/403.php;
	error_page 404 /core/templates/404.php;

	location / {
	   rewrite ^ /index.php$request_uri;
	}

	location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
		deny all;
	}
	location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
		deny all;
	}

	location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+)\.php(?:$|\/) {
		fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param PATH_INFO $fastcgi_path_info;
		#Avoid sending the security headers twice
		fastcgi_param modHeadersAvailable true;
		fastcgi_param front_controller_active true;
		fastcgi_pass unix:/run/php/php7.2-fpm.sock;
		fastcgi_intercept_errors on;
		fastcgi_request_buffering off;
	}

	location ~ ^\/(?:updater|ocs-provider)(?:$|\/) {
		try_files $uri/ =404;
		index index.php;
	}

	# Adding the cache control header for js and css files
	# Make sure it is BELOW the PHP block
	location ~ \.(?:css|js|woff2?|svg|gif)$ {
		try_files $uri /index.php$request_uri;
		add_header Cache-Control "public, max-age=15778463";
		# Add headers to serve security related headers (It is intended to
		# have those duplicated to the ones above)
		# Before enabling Strict-Transport-Security headers please read into
		# this topic first.
		# add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
		#
		# WARNING: Only add the preload option once you read about
		# the consequences in https://hstspreload.org/. This option
		# will add the domain to a hardcoded list that is shipped
		# in all major browsers and getting removed from this list
		# could take several months.
		add_header X-Content-Type-Options nosniff;
		add_header X-XSS-Protection "1; mode=block";
		add_header X-Robots-Tag none;
		add_header X-Download-Options noopen;
		add_header X-Permitted-Cross-Domain-Policies none;
		add_header Referrer-Policy no-referrer;

		# Optional: Don't log access to assets
		access_log off;
	}

	location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
		try_files $uri /index.php$request_uri;
		# Optional: Don't log access to other assets
		access_log off;
	}
}

And my config.php file looks like this (Note: I have replaced sensitive info with the word ommitted):

<?php
$CONFIG = array (
  'instanceid' => 'ommitted',
  'passwordsalt' => 'ommitted',
  'secret' => 'ommitted',
  'trusted_domains' =>
  array (
	0 => 'ommitted',
  ),
  'datadirectory' => '/usr/share/nginx/nextcloud/data',
  'dbtype' => 'mysql',
  'version' => '15.0.2.0',
  'dbname' => 'nextcloud',
  'dbhost' => 'ommitted',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'nextcloud',
  'dbpassword' => 'ommitted',
  'installed' => true,
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'mail_smtpmode' => 'smtp',
  'mail_smtpsecure' => 'ssl',
  'mail_sendmailmode' => 'smtp',
  'mail_from_address' => 'nextcloud',
  'mail_domain' => 'ommitted',
  'mail_smtpauthtype' => 'LOGIN',
  'mail_smtpauth' => 1,
  'mail_smtphost' => 'ommitted',
  'mail_smtpport' => '465',
  'mail_smtpname' => 'ommitted',
  'mail_smtppassword' => 'ommitted',
);

I feel it is worth noting that I previously had a Nextcloud 13 instance configured in the exact same manner, including the same HAProxy setup and nginx config. There is also nothing in the logs about this. Does anyone know what is going on and how I can fix it? I really need this working ASAP as I use it for classes in college.

1 Like

I experience the same problem after migrating a working nextcloud 15.0.6 installation to a new server. The old server was using apache+mod_php and the new is using apache+php-fpm.

I can login using the browser and everything works fine but I can’t login using the client or e.g. caldav.

Could you find a solution to your problem?

1 Like

I have the same problem, as do a LOT of people, but i cant find anyone who solved the problem that will share… :rage:

Hi fomtooley!

Make a new topic and include your information from your setup there. Everyone’s configuration can be different, so may be something very specific in your case.