I did setup Cells in a Container with Minio S3 as storage backend and behind Nginx as proxy. So far everything seems to work. I can even upload smaller files like images.
But if I try to upload bigger files with 1GB or 4GB, they are instantly failing with:
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
<Resource>/io/personal-files/somefile.mkv</Resource>
<RequestId>169BE728547700F2</RequestId>
<HostId>3L137</HostId>
</Error>
For me the weird thing is, that there aren’t any logs. I mean there are logs for some tasks, but none related to this upload. On Minio there are also no logs related to this upload.
Has anyone any idea what it could be or even had the same issue?
Nginx Config:
client_max_body_size 10G;
location / {
proxy_buffering off;
proxy_pass https://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
# this line is required for cells-sync
# grpc_pass grpcs://localhost:8080;
}
location /ws/ {
proxy_buffering off;
proxy_pass https://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
I have exactly the same problem. I am also using nginx.
The problem seems to be connected to multipart upload. When my instance is set to multipart-upload when files are bigger than 104857600 bytes I can upload files up to about 100 mb without problems. When I reduce this number, even smaller files fail to upload.
After some testing with multiple configuration, could you try to use those lines in your config and then tell me if you still observe the issue,
server {
server_name myproxy.net;
# To allow special characters in headers
ignore_invalid_headers off;
# Allow any size file to be uploaded.
# Set to a value such as 1000m; to restrict file size to a specific value
client_max_body_size 0;
# To disable buffering
proxy_buffering off;
location / {
proxy_ssl_verify off;
proxy_pass https://cells:8080;
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_set_header Host $http_host;
proxy_connect_timeout 300;
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
}
}
@maltechx
It is just a shot in the dark, but maybe adding network_mode: "host" might solve your problem?
@c12simple
Thanks for your help. You pointed me to the solution
For me it was not the port, but the wrong url in CELLS_EXTERNAL (I had used “localhost” instead of the “real” one.
For everybody else having the same problem, this is my working setup (I am using an external db):