Nextcloud-Freigabe funktioniert nicht im Nginx-Reverse-Proxy

Nextcloud-Freigabe funktioniert nicht im Nginx-Reverse-Proxy

Ich habe einen Nginx-Reverse-Proxy mit dem Jwilder-Image und Letsencrypt gut eingerichtet. Alles funktioniert gut und ich habe mehrere Container, die wie erwartet laufen.

Ich habe jetzt jedoch einen Nextcloud-Container auf einem meiner Entwicklungsserver erstellt und kann ihn nicht verwenden, um Dateien mit dem anderen Nextcloud-Container auf dem Stage-Server zu teilen, der über dieselben Einstellungen verfügt.

Der Fehler tritt auf, Failed to perform actionwenn ich die freigegebene Datei akzeptiere. Und wenn ich die Anmeldekonsole überprüfe, sehe ich

Refused to connect to 'http://dev.domain.com/ocs/v2.php/apps/files_sharing/api/v1/remote_shares/pending/2' because it violates the following Content Security Policy directive: "connect-src 'self'".

ich habe eine Weile herumgelesen und festgestelltdies auf der offiziellen Doc-Siteaber ich bekomme das nicht zum Laufen. Die Nextcloud selbst hat SSL, aber wenn ich sie freigebe, sieht es so aus, als würde sie mit HTTP bereitgestellt. Ich weiß, dass das etwas mit dem Reverse-Proxy zu tun hat, aber ich bin mir nicht sicher, ob ich schon weiß, wie ich das lösen kann.

Jede Hilfe ist willkommen.

Notiz

mit

Bild: nextcloud:latest

Bild: MariaDB

Bild: jwilder/nginx-proxy:0.7.0

Bild: jrcs/letsencrypt-nginx-proxy-companion

Antwort1

Was bei mir funktioniert, ist die Verwendung eines Nginx-Containers vor dem Nextcloud-Container, beide hinter einem Proxy. Damit das funktioniert, müssen Sie auch Ihre eigene nginx.conf hinzufügen. Eine Ymal-Datei wie diese.

version: '2'
services:
  web:
    image: nginx
    container_name: nextcloud_webserver
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    links:
      - app
    volumes_from:
      - app
    environment:
      - VIRTUAL_HOST=nextcloud_url
      - VIRTUAL_NETWORK=nextcloud_network
      - VIRTUAL_PORT=80
      - LETSENCRYPT_HOST=nextcloud_url
      - LETSENCRYPT_EMAIL=uremailforthe
    networks:
      - proxy-tier
    restart: unless-stopped

  app:
    image: nextcloud:fpm
    container_name: nextcloud_app
    links:
      - db
    volumes:
      - ./nextcloud/apps:/var/www/html/apps
      - ./nextcloud/config:/var/www/html/config
      - ./nextcloud/data:/var/www/html/data
    networks:
      - proxy-tier
    restart: unless-stopped

  db:
    image: mariadb
    container_name: db
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=urpassword
      - MYSQL_DATABASE=urdbname
      - MYSQL_USER=mysqluser
      - MYSQL_PASSWORD=mysqluserpassword
    networks:
      - proxy-tier
    restart: unless-stopped

networks:
  proxy-tier:
    external:
      name: nextcloud_network

Fügen Sie dann die folgende Nginx-Datei an derselben Stelle hinzu, an der Sie die Docker-Compose-Up-Datei ausführen.

user www-data;

    events {

     worker_connections 768;
    }
    http {
     upstream backend {
       server app:9000;
     }
     include /etc/nginx/mime.types;
     default_type application/octet-stream;
     server {
      listen 80;
      # Add headers to serve security related headers
      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;
      root /var/www/html;
      client_max_body_size 10G; # 0=unlimited - set max upload size
      fastcgi_buffers 64 4K;
      gzip on;
      gzip_vary on;
      gzip_min_length 10240;
      gzip_proxied expired no-cache no-store private auth;
      gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
      gzip_disable "MSIE [1-6]\.";
      index index.php;
      error_page 403 /core/templates/403.php;
      error_page 404 /core/templates/404.php;
      rewrite ^/.well-known/carddav /remote.php/dav/ permanent;
      rewrite ^/.well-known/caldav /remote.php/dav/ permanent;
      location = /robots.txt {
       allow all;
       log_not_found off;
       access_log off;
      }
      location ~ ^/(build|tests|config|lib|3rdparty|templates|data)/ {
       deny all;
      }
      location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
       deny all;
      }
      location / {
       rewrite ^/remote/(.*) /remote.php last;
       rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
       try_files $uri $uri/ =404;
      }
      location ~ \.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;
       fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
       fastcgi_pass backend;
       fastcgi_intercept_errors on;
      }
      # Adding the cache control header for js and css files
      # Make sure it is BELOW the location ~ \.php(?:$|/) { block
      location ~* \.(?:css|js)$ {
       add_header Cache-Control "public, max-age=7200";
       # Add headers to serve security related headers
       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;
      }
      # Optional: Don't log access to other assets
      location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
       access_log off;
      }
     }
    }

verwandte Informationen