Problem mit nginx bzw. Nextcloud


badmaxx

New Member
Hallo,

ich habe auf meinem Server als Webserver nginx am laufen und habe Nextcloud installiert.
Soweit läuft auch alles, nur habe ich das Problem dass alle nicht existierenden Sudomians immer auf meine Subdomain für Nextcloud weitergeleitet werden.

also wenn ich z.b. asdf.domain.tld aufrufe werde ich auf cloud.domain.tld umgeleitet.

Ich finde leider nicht wo ich das umstellen kann.
Anbei meine config von nginx für die Subdomain.

Danke schonmal

Code:
# Default server configuration
#
server {
	server_name cloud.domain.tld;

	listen 80;
	listen [::]:80;
	return 301 https://$server_name$request_uri;	
}

server {
	
	server_name cloud.domain.tld;

	# SSL configuration
	#
	listen 443 ssl;
	listen [::]:443 ssl;
	#
	# Self signed certs generated by the ssl-cert package
	# Don't use them in a production server!
	#
	# include snippets/snakeoil.conf;
	ssl_certificate /etc/letsencrypt/live/cloud.domaind.tld/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/cloud.domain.tld/privkey.pem;	

	include global/letsencrypt-auth.conf;

	# Add headers to serve security related headers
    	# Before enabling Strict-Transport-Security headers please read into this
    	# topic first.
    	add_header Strict-Transport-Security "max-age=15768000;
    	includeSubDomains; preload;";
   	add_header X-Content-Type-Options nosniff;
    	add_header X-Frame-Options "SAMEORIGIN";
    	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;

	root /var/www/nextcloud/html;

	# Add index.php to the list if you are using PHP
	index index.html index.htm index.php;

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

    	# Disable gzip to avoid the removal of the ETag header
    	gzip off;

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

	location /robots.txt {
		allow all;
	}

	location / {
		rewrite ^ /index.php$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/.+|core/templates/40[34])\.php(?:$|/) {
        	include fastcgi_params;
        	fastcgi_split_path_info ^(.+\.php)(/.*)$;
        	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        	fastcgi_param PATH_INFO $fastcgi_path_info;
        	fastcgi_param HTTPS on;
        	#Avoid sending the security headers twice
        	fastcgi_param modHeadersAvailable true;
        	fastcgi_param front_controller_active true;
        	fastcgi_pass php;
        	fastcgi_intercept_errors on;
        	#fastcgi_request_buffering off;
		#erst in nginx 1.7.2 verfügbar
    	}

    	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)$ {
        	try_files $uri /index.php$uri$is_args$args;
        	add_header Cache-Control "public, max-age=7200";
        	# 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;";
        	add_header X-Content-Type-Options nosniff;
        	add_header X-Frame-Options "SAMEORIGIN";
        	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;
        	# Optional: Don't log access to assets
        	access_log off;
    	}

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

	#
	# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
	#
	#location ~ \.php$ {

	#	include fastcgi_params;
	#	fastcgi_pass php;
	#	fastcgi_index index.php;
	#}

	# deny access to .htaccess files, if Apache's document root
	# concurs with nginx's one
	#
	#location ~ /\.ht {
	#	deny all;
	#}
}
 
Es gibt im Prinzip zwei Möglichkeiten: Die eine ist im DNS zu regeln, dort steht vermutlich eine Wildcard-Subdomain drin, durch die beliebige Subdomains zu deiner Server-IP auflösen. Sofern möglich löscht du diesen Wildcard-Eintrag und legst die Subdomains, die du wirklich benötigst, explizit an.
Der zweite Ansatzpunkt ist die Webserver-Konfig. Ich habe mit nginx zwar bisher kaum zu tun gehabt (setze Apache ein), aber das handeln die meisten Webserver ähnlich. Anfragen für Domains, die nicht explizit auf dem Server konfiguriert werden, werden an den Default Virtual Host weitergeleitet - bei Apache ist das der erste in der Konfiguration (und ich meine, bei nginx auch). Das dürfte bei dir der mit Nextcloud sein. Leg nun einen neuen Default Virtual Host in deine nginx-Konfiguration an, der die nicht genutzten Domains auffängt (ich leite diese z.B. einfach weiter auf www.hauptdomain.de)
Die Anpassung der Webserver-Konfiguration solltest du übrigens auch durchführen, falls du den Wildcard-Eintrag im DNS entfernst. Es gibt ja u.U. auch Subdomains für andere Dienste, die nicht im Webserver benötigt werden wie z.B. mail.domain.de für einen Mailserver.
 
Danke für den Tipp.
Hab jetzt nen neuen default vHost angelegt der einfach alles andere auf ne leere Seite leitet.
 
Danke für den Tipp.
Hab jetzt nen neuen default vHost angelegt der einfach alles andere auf ne leere Seite leitet.

Das ist aber nicht schön, da keine Fehlermeldung ausgegeben wird. Schreibe da mal wenigstens rein "Seite existiert nicht"
 
Back
Top