我使用以下 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
,或者在注销后清除缓存,图像将不再可访问。