Nextcloud 与 Docker Compose 在反向代理(nginx)后面,带有 proxy_pass(泄漏图像)

Nextcloud 与 Docker Compose 在反向代理(nginx)后面,带有 proxy_pass(泄漏图像)

我使用以下 docker-compose.yml 文件运行 Nextcloud,并使用 Plesk 和 nginx 作为反向代理。

我的问题是无需登录即可访问图像。我可以使用以下 URL 打开图像https://nc.mydomain.com/core/preview?fileId=30&x=2880&y=1800&a=true

我尝试了 Nextcloud docker-compose 示例中的 nginx 指令Github。问题是它不起作用,因为我必须使用proxy_pass http://127.0.0.1:8080/;

有人可以帮忙,以防止在未登录的情况下访问图像吗?

  • 使nginx 设置与 proxy_pass 一起工作,但是如何呢。
version: '3'

services:
  db:
    image: mariadb:10.5
    container_name: nextcloud-mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    environment:
      - MARIADB_AUTO_UPGRADE=1
      - MARIADB_DISABLE_UPGRADE_BACKUP=1
    env_file:
      - db.env
    volumes:
      - volumes/mariadb:/var/lib/mysql

  redis:
    image: redis:alpine
    container_name: nextcloud-redis
    restart: always
    command: /bin/sh -c "redis-server --requirepass $$REDIS_HOST_PASSWORD"
    env_file:
      - redis.env

  app:
    image: nextcloud:apache
    container_name: nextcloud-app
    restart: always
    ports:
      - 127.0.0.1:8080:80
    volumes:
      - volumes/nextcloud:/var/www/html
    depends_on:
      - db
      - redis
    environment:
      - MYSQL_HOST=db
      - REDIS_HOST=redis
      - NEXTCLOUD_TRUSTED_DOMAINS=nc.mydomain.com
    env_file:
      - db.env
      - redis.env

  cron:
    image: nextcloud:apache
    container_name: nextcloud-cron
    restart: always
    volumes:
      - volumes/nextcloud:/var/www/html
    entrypoint: /cron.sh
    depends_on:
      - db
      - redis

volumes:
  db:
  nextcloud:

Plesk 设置中针对 Nextcloud 子域的“附加 nginx 指令”(泄漏图像)。

location / {
  proxy_set_header    Host $host;
  proxy_set_header    X-Real-IP $remote_addr;
  proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header    X-Forwarded-Proto $scheme;
  proxy_pass          http://127.0.0.1:8080/;
  proxy_read_timeout  36000s;
  #Only use secure connection
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
  #Allow big files to upload
  client_max_body_size 0;
}

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

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

答案1

浏览器缓存了图像。
这就是为什么无需登录 Nextcloud 即可打开图像的原因。

在其他浏览器中打开 URL https://nc.mydomain.com/core/preview?fileId=30&x=2880&y=1800&a=true,或者在注销后清除缓存,图像将不再可访问。

相关内容