Configuring a MinIO in the Virtual Host style

Hello everyone.
By default, MinIO works in the path style, but the PeerTube settings are in the virtual host style.
For MinIO, I also have an NGINX proxy configured. Here are my settings

MinIO configuration file

MINIO_VOLUMES="/data/minio/"
MINIO_OPTS="--address :9000 --console-address :9001"
MINIO_ROOT_USER=minioUser
MINIO_ROOT_PASSWORD=minioPassword

MINIO_SERVER_URL=https://s3.domain.ru
MINIO_BROWSER_REDIRECT_URL=https://console-s3.domain.ru
MINIO_DOMAIN= "s3.domain.ru"

As well as the NGINX proxy configuration file

server {
server_name s3.domain.ru;
listen 443;
listen [::]:443;
access_log /var/log/nginx/s3.domain.ru-access.log;
error_log /var/log/nginx/s3.domain.ru-error.log;

ssl_certificate /etc/letsencrypt/live/s3.domain.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/s3.domain.ru/privkey.pem;

location ^~ '/.well-known/acme-challenge' {
default_type "text/plain";
root /var/www/certbot;
}

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

location / {
proxy_set_header Host $http_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_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;

proxy_pass 192.168.1.15:9000;
}
}

server {
server_name console-s3.domain.ru;
listen 443;
listen [::]:443;
access_log /var/log/nginx/console-s3.domain.ru-access.log;
error_log /var/log/nginx/console-s3.domain.ru-error.log;

ssl_certificate /etc/letsencrypt/live/console-s3.domain.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/console-s3.domain.ru/privkey.pem;

location ^~ '/.well-known/acme-challenge' {
default_type "text/plain";
root /var/www/certbot;
}

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

location / {
proxy_set_header Host $http_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_set_header X-NginX-Proxy true;

# This is necessary to pass the correct IP to be hashed
real_ip_header X-Real-IP;

proxy_connect_timeout 300;

# To support websocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

chunked_transfer_encoding off;

proxy_pass 192.168.1.15:9001;
}
}

This configuration only works in the path style, for example s3.domain.ru/bucket1
How do I configure it to work in the style of a virtual host, for example bucket1.s3.domain.ru ?

In the configuration of the Peer Tube, I decided to add
base_url: ‹ https://s3.domain.ru/video-bucket ›

Now I get an error when playing
GET https://s3.domain.ru/video-bucket/streaming-playlists/hls/d74add60-201c-4675-91aa-ad7590653ad9/01a74e66-8006-468a-89b6-3d41d9e9d28c-segments-sha256.json 403

GET https://s3.domain.ru/video-bucket/streaming-playlists/hls/d74add60-201c-4675-91aa-ad7590653ad9/a1c3f02e-7ab3-46ef-95cb-b76bc87d9686-master.m3u8 403

Cannot stringify meta. TypeError: Converting circular structure to JSON
    --> starting at object with constructor 'b'
    |     property 'impl' -> object with constructor 'P'
    |     property 'context' -> object with constructor 'Object'
    --- property 'loader' closes the circle
    at JSON.stringify (<anonymous>)
    at p.buildMetaServerLogPayload (logger.ts:120:21)
    at p.buildServerLogPayload (logger.ts:94:18)
    at Object.hook (logger.ts:55:81)
    at p.runHooks (logger.ts:136:15)
    at p.error (logger.ts:39:10)
    at u._onError (hls-plugin.ts:284:21)
    at t.<anonymous> (hls-plugin.ts:390:59)
    at b.emit (hls.light.js:19222:33)
    at s.emit (hls.light.js:11463:26)

It is very strange that access is denied. If you open the link in the browser
https://s3.domain.ru/video-bucket/streaming-playlists/hls/d74add60-201c-4675-91aa-ad7590653ad9/a1c3f02e-7ab3-46ef-95cb-b76bc87d9686-master.m3u8 then I see this result

but if you look at the object storage, you can see all the files and even open a fragment of .mp4

Does no one really know how to set it up correctly?
I also wanted to ask Chocobozzz, should we expect a change in PeerTube to connect S3 storage in the path style, how does it work in MinIO?