Nextcloud: Von APache auf NGINX umstellen

Status
Für weitere Antworten geschlossen.

OdinsAuge

Benutzer
Mitglied seit
12. Nov 2015
Beiträge
362
Punkte für Reaktionen
30
Punkte
34
Hallo,

Ich würde gerne meine Nextcloud (virtual Host) von Apache auf nginx umstellen.
Ich habe versucht die Config laut Nextcloud Doku und einiger Posts im Internet zu erstellen, leider bekomme ich nur einen Error 404.
Ich weiß nur nicht obs am vhost liegt oder aber daran, dass die DiskStation wieder einen Umweg braucht um das ganze zu konfigurieren.

Ich habe folgenden Inhalt in /usr/local/etc/nginx/sites-enabled

Rich (BBCode):
upstream php-handler {
    server 127.0.0.1:9000;
    #server unix:/var/run/php5-fpm.sock;
}

server {
    listen 80;
    server_name mydomain.com;
    # enforce https
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name mydomain.com;

	ssl_certificate /usr/syno/etc/certificate/system/default/cert.pem;
	ssl_certificate_key /usr/syno/etc/certificate/system/default/privkey.pem;

	# 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;

	# Path to the root of your installation
	root /volume1/web/mimir;

	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 /nextcloud/public.php?service=host-meta
	# last;
	#rewrite ^/.well-known/host-meta.json
	# /nextcloud/public.php?service=host-meta-json last;

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

	location /.well-known/acme-challenge { }
	
	location ^~ /mimir {
		# set max upload size
		client_max_body_size 1G;
		fastcgi_buffers 64 4K;
        # Disable gzip to avoid the removal of the ETag header
		gzip off;
		# Uncomment if your server is build with the ngx_pagespeed module
		# This module is currently not supported.
		#pagespeed off;

		location /mimir {
			rewrite ^ /mimir/index.php$uri;
		}

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

		location ~ ^/mimir/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.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;
			fastcgi_param HTTPS on;
			#Avoid sending the security headers twice
			fastcgi_param modHeadersAvailable true;
			fastcgi_param front_controller_active true;
			fastcgi_pass php-handler;
			fastcgi_intercept_errors on;
			fastcgi_request_buffering off;
		}

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

Nach dem verifizieren der config und dem restarten des nginx habe ich in der WebStation den virtual host von Apache auf Nginx umgestellt. Beim aufruf von mydomain.com kommt eben der 404.

Hat jemand Nextcloud auf nginx laufen und kann mir weiterhelfen?

EDIT:

Ich hab die selbe config mit einer anderen domain versucht die nicht als vhost konfiguriert wurde. server_name wurde auf other.com geändert und ich rufe other.com/mimir auf. Hier bekomme ich 502 Bad Gateway.
 
Zuletzt bearbeitet:

OdinsAuge

Benutzer
Mitglied seit
12. Nov 2015
Beiträge
362
Punkte für Reaktionen
30
Punkte
34
Hab den vhost in der WebStation gelöscht und nur die config eingebaut, ich bekomme aber einen gateway error.
Ein Tipp aus dem Internet legt nahe, dass es an der PHP einbindung liegt, weiß jemand wie ich das auf der DiskStation mache?

@KPanda danke für die empfehlung, das ist mein Blog. :)
 

KPanda

Benutzer
Mitglied seit
22. Aug 2013
Beiträge
9
Punkte für Reaktionen
0
Punkte
1
Wie geil ist das denn? Vielen Dank dafür! Das hat mir schon so oft geholfen.
Vielleicht kannst du mir noch sagen wie ich in der Apache conf die Einträge speichere.
Diese hier:
PHP:
<IfModule mod_headers.c>
  <IfModule mod_fcgid.c>
    <IfModule mod_setenvif.c>
      SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
      RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATIO
      [size=150]Header always set Strict-Transport-Security "max-age=15768000"[/size]
    </IfModule>
  </IfModule>
</IfModule>


Bei mir sind die nach einem Neustart von Apache immer weg.
 

OdinsAuge

Benutzer
Mitglied seit
12. Nov 2015
Beiträge
362
Punkte für Reaktionen
30
Punkte
34
ALso wenn ich mich nicht irre, kannst du das in die .htaccess auch eintragen.
Welche conf Datei hast du probiert? Mir fällt die ein: /volume1/@appstore/Apache2.2/usr/local/etc/apache24/conf/ bzw . /volume1/@appstore/Apache2.4/usr/local/etc/apache24/conf/
Bzw. gibts noch /usr/local/etc/apache24/sites-enabled/ wo man eigene conf dateien anlegen kann.

Es gibt conf dateien die den Nestart der DS zwar überstehen aber ein DSM update nicht, dann gibts wieder welche die auch ein DSM Update überstehen, leider weiß ich nicht mehr welche das sind.


Um zum Thema zurück zu kommen, bisher kein Erfolg, ich nehm an ich muss irgendwo speziell für die DS eine Änderung in der Config machen, leider kenn ich mich sowohl mit nginx als auch auf der DS zu wenig aus um dem auf die Spur zu kommen.
 

KPanda

Benutzer
Mitglied seit
22. Aug 2013
Beiträge
9
Punkte für Reaktionen
0
Punkte
1
Danke für die Antwort. Ich habe es anders gelöst und
Rich (BBCode):
'forcessl' => true,
  'forceSSLforSubdomains' => true,
in die config,php eingetragen
 

Kruemelino

Benutzer
Mitglied seit
10. Feb 2019
Beiträge
1
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen, ich versuche mich auch gerade an dem Vorhaben von apache auf ngnix umzuschalten.

ich komme leider nicht weiter. Ich stehe momentan vor einen Fehler 502.
  • Meine NC.conf befindet sich im Ordner /usr/local/etc/nginx/sites-enabled
  • Ein test mit nginx -t liefert ein erfolgreiches Testergebnis (auch nach einem sudo synoservicectl --restart nginx)
  • Auf der Synology ist php7.2 installiert. Apache 2.4 ist zum testen deaktiviert.
  • Zugriff erfolgt aus dem lokalen Subnetz sowie über eine MyFritz freigabe (DynDNS).
  • Nextcloud ist im Ordner Nextcloud im web Verzeichnis installiert und funktioniert mit Außnahme der imagick-Meldung mit Apache gewünscht.

Könnt ihr mir einen Tipp geben? Wo kann ich zur Fehlereingrenzung ansetzen?
(Das ganze Prozedere für die Umstellung auf ngnix sollte man mal zusammentragen. Man sucht sich viel im Netz zusammen, aber auf der Syno ist manches anders.)

Danke schon mal im vorraus
Gert

Rich (BBCode):
upstream php-handler {
    server 127.0.0.1:9000;
    #server unix:/var/run/php/php7.0-fpm.sock;
}

server {
    listen 80;
    listen [::]:80;
    server_name xyz.myfritz.net;
    # enforce https
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name xyz.myfritz.net;

    # Use Mozilla's guidelines for SSL/TLS settings
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/
    # NOTE: some settings below might be redundant
	ssl_certificate /usr/syno/etc/certificate/system/default/cert.pem;
	ssl_certificate_key /usr/syno/etc/certificate/system/default/privkey.pem;

    # 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-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 /volume1/web/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 /Nextcloud/public.php?service=host-meta
    # last;
    #rewrite ^/.well-known/host-meta.json
    # /Nextcloud/public.php?service=host-meta-json last;

    # The following rule is only needed for the Social app.
    # Uncomment it if you're planning to use this app.
    # rewrite ^/.well-known/webfinger /Nextcloud/public.php?service=webfinger last;

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

    location /.well-known/acme-challenge { }

    location ^~ /Nextcloud {

        # 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;

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

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

        location ~ ^\/Nextcloud\/(?: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;
            fastcgi_param HTTPS on;
            #Avoid sending the security headers twice
            fastcgi_param modHeadersAvailable true;
            fastcgi_param front_controller_active true;
            fastcgi_pass php-handler;
            fastcgi_intercept_errors on;
            fastcgi_request_buffering off;
        }

        location ~ ^\/Nextcloud\/(?: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 ~ ^\/Nextcloud\/.+[^\/]\.(?:css|js|woff2?|svg|gif)$ {
            try_files $uri /Nextcloud/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;";
            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 ~ ^\/Nextcloud\/.+[^\/]\.(?:png|html|ttf|ico|jpg|jpeg)$ {
            try_files $uri /Nextcloud/index.php$request_uri;
            # Optional: Don't log access to other assets
            access_log off;
        }
    }
}
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat