Files
B24-docker/confs/nginx/inc/clouds.conf
T
2026-05-20 15:23:05 +03:00

482 lines
20 KiB
Plaintext

#
# Use nginx to return static content from cloud storage
#
location ^~ /upload/bx_cloud_upload/ {
# Amazon Simple Storage Service
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.(s3|af-south-1|ap-east-1|ap-south-1|ap-south-2|ap-southeast-1|ap-southeast-2|ap-southeast-3|ap-southeast-4|ap-northeast-1|ap-northeast-2|ap-northeast-3|ca-central-1|ca-west-1|cn-north-1|cn-northwest-1|eu-central-1|eu-central-2|eu-west-1|eu-west-2|eu-west-3|eu-south-1|eu-south-2|eu-north-1|il-central-1|me-south-1|me-central-1|sa-east-1|us-east-1|us-east-2|us-west-1|us-west-2|us-gov-east-1|us-gov-west-1)\.amazonaws\.com/([^\s]+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://$2.$3.amazonaws.com/$4;
}
# Google Storage
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.commondatastorage\.googleapis\.com/([^\s]+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://$2.commondatastorage.googleapis.com/$3;
}
# Rackspace Cloud Files
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.([^/:\s]+)\.([^/:\s]+)\.rackcdn\.com/([^\s]+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://$2.$3.$4.rackcdn.com/$5;
}
# Clodo.ru (old)
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.clodo\.ru\:(80|443)/([^\s]+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://$2.clodo.ru:$3/$4;
}
# Clodo.ru
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.clodo\.ru/([^\s]+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://$2.clodo.ru/$3;
}
# Selectel
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.selcdn\.ru/([^\s]+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://$2.selcdn.ru/$3;
}
# Selectel as S3 compatible storage
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.selstorage\.ru/([^\s]+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://$2.selstorage.ru/$3;
}
# HotBox
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.hb\.bizmrg\.com/([^\s]+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://$2.hb.bizmrg.com/$3;
}
# HotBox
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.hb\.bizmrg\.com/([^\s].+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://hb.bizmrg.com/$2;
}
# Yandex Object Storage
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.storage\.yandexcloud\.net/([^\s]+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://$2.storage.yandexcloud.net/$3;
}
# Yandex Object Storage
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.storage\.yandexcloud\.net/([^\s].+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://storage.yandexcloud.net/$2;
}
# S3 compatible storage
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.io\.activecloud\.com/([^\s]+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://$2.io.activecloud.com/$3;
}
# S3 compatible storage
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.io\.activecloud\.com/([^\s].+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://io.activecloud.com/$2;
}
# Timeweb.cloud S3 compatible storage
location ~ ^/upload/bx_cloud_upload/(http[s]?)\.s3\.timeweb\.cloud/([^\s].+)$ {
internal;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
#proxy_max_temp_file_size 0;
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
proxy_pass $1://s3.timeweb.cloud/$2;
}
# block everything else
location ~* .*$ {
deny all;
}
}
#
# cloud resize cache
#
location ^~ /upload/resize_cache/c/upload/bx_cloud_upload/ {
# Amazon
location ~ ^/upload/resize_cache/c/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.(s3|af-south-1|ap-east-1|ap-south-1|ap-south-2|ap-southeast-1|ap-southeast-2|ap-southeast-3|ap-southeast-4|ap-northeast-1|ap-northeast-2|ap-northeast-3|ca-central-1|ca-west-1|cn-north-1|cn-northwest-1|eu-central-1|eu-central-2|eu-west-1|eu-west-2|eu-west-3|eu-south-1|eu-south-2|eu-north-1|il-central-1|me-south-1|me-central-1|sa-east-1|us-east-1|us-east-2|us-west-1|us-west-2|us-gov-east-1|us-gov-west-1)\.amazonaws\.com/([^\s]+)$ {
internal;
set $new_uri $upstream_http_x_gen_src;
set $cdi $upstream_http_x_cd_info;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
if ($cdi) {
more_set_headers -s 200 'Content-Disposition: $cdi';
}
proxy_pass $1://$2.$3.amazonaws.com/$4;
proxy_intercept_errors on;
error_page 403 404 500 502 503 504 = /$new_uri;
}
# Rackspace
location ~ ^/upload/resize_cache/c/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.([^/:\s]+)\.([^/:\s]+)\.rackcdn\.com/([^\s]+)$ {
internal;
set $new_uri $upstream_http_x_gen_src;
set $cdi $upstream_http_x_cd_info;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
if ($cdi) {
more_set_headers -s 200 'Content-Disposition: $cdi';
}
proxy_pass $1://$2.$3.$4.rackcdn.com/$5;
proxy_intercept_errors on;
error_page 403 404 500 502 503 504 = /$new_uri;
}
# Clodo
location ~ ^/upload/resize_cache/c/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.clodo\.ru\:(80|443)/([^\s]+)$ {
internal;
set $new_uri $upstream_http_x_gen_src;
set $cdi $upstream_http_x_cd_info;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
if ($cdi) {
more_set_headers -s 200 'Content-Disposition: $cdi';
}
proxy_pass $1://$2.clodo.ru:$3/$4;
proxy_intercept_errors on;
error_page 403 404 500 502 503 504 = /$new_uri;
}
# Google
location ~ ^/upload/resize_cache/c/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.commondatastorage\.googleapis\.com/([^\s]+)$ {
internal;
set $new_uri $upstream_http_x_gen_src;
set $cdi $upstream_http_x_cd_info;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
if ($cdi) {
more_set_headers -s 200 'Content-Disposition: $cdi';
}
proxy_pass $1://$2.commondatastorage.googleapis.com/$3;
proxy_intercept_errors on;
error_page 403 404 500 502 503 504 = /$new_uri;
}
# Selectel
location ~ ^/upload/resize_cache/c/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.selcdn\.ru/([^\s]+)$ {
internal;
set $new_uri $upstream_http_x_gen_src;
set $cdi $upstream_http_x_cd_info;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
if ($cdi) {
more_set_headers -s 200 'Content-Disposition: $cdi';
}
proxy_pass $1://$2.selcdn.ru/$3;
proxy_intercept_errors on;
error_page 403 404 500 502 503 504 = /$new_uri;
}
# Selectel as S3 compatible storage
location ~ ^/upload/resize_cache/c/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.selstorage\.ru/([^\s]+)$ {
internal;
set $new_uri $upstream_http_x_gen_src;
set $cdi $upstream_http_x_cd_info;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
if ($cdi) {
more_set_headers -s 200 'Content-Disposition: $cdi';
}
proxy_pass $1://$2.selstorage.ru/$3;
proxy_intercept_errors on;
error_page 403 404 500 502 503 504 = /$new_uri;
}
# Yandex
location ~* ^/upload/resize_cache/c/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.storage\.yandexcloud\.net/([^\s]+)$ {
internal;
set $new_uri $upstream_http_x_gen_src;
set $cdi $upstream_http_x_cd_info;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
if ($cdi) {
more_set_headers -s 200 'Content-Disposition: $cdi';
}
proxy_pass $1://$2.storage.yandexcloud.net/$3;
proxy_intercept_errors on;
error_page 403 404 500 502 503 504 = /$new_uri;
}
# Yandex second option
location ~ ^/upload/resize_cache/c/upload/bx_cloud_upload/(http[s]?)\.storage\.yandexcloud\.net/([^\s].+)$ {
internal;
set $new_uri $upstream_http_x_gen_src;
set $cdi $upstream_http_x_cd_info;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
if ($cdi) {
more_set_headers -s 200 'Content-Disposition: $cdi';
}
proxy_pass $1://storage.yandexcloud.net/$2;
proxy_intercept_errors on;
error_page 403 404 500 502 503 504 = /$new_uri;
}
# HotBox
location ~ ^/upload/resize_cache/c/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.hb\.bizmrg\.com/([^\s]+)$ {
internal;
set $new_uri $upstream_http_x_gen_src;
set $cdi $upstream_http_x_cd_info;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
if ($cdi) {
more_set_headers -s 200 'Content-Disposition: $cdi';
}
proxy_pass $1://$2.hb.bizmrg.com/$3;
proxy_intercept_errors on;
error_page 403 404 500 502 503 504 = /$new_uri;
}
# HotBox
location ~ ^/upload/resize_cache/c/upload/bx_cloud_upload/(http[s]?)\.hb\.bizmrg\.com/([^\s].+)$ {
internal;
set $new_uri $upstream_http_x_gen_src;
set $cdi $upstream_http_x_cd_info;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
if ($cdi) {
more_set_headers -s 200 'Content-Disposition: $cdi';
}
proxy_pass $1://hb.bizmrg.com/$2;
proxy_intercept_errors on;
error_page 403 404 500 502 503 504 = /$new_uri;
}
# Clodo.ru
location ~ ^/upload/resize_cache/c/upload/bx_cloud_upload/(http[s]?)\.([^/:\s]+)\.clodo\.ru/([^\s]+)$ {
internal;
set $new_uri $upstream_http_x_gen_src;
set $cdi $upstream_http_x_cd_info;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
if ($cdi) {
more_set_headers -s 200 'Content-Disposition: $cdi';
}
proxy_pass $1://$2.clodo.ru/$3;
proxy_intercept_errors on;
error_page 403 404 500 502 503 504 = /$new_uri;
}
# Timeweb.cloud S3 compatible storage
location ~ ^/upload/resize_cache/c/upload/bx_cloud_upload/(http[s]?)\.s3\.timeweb\.cloud/([^\s].+)$ {
internal;
set $new_uri $upstream_http_x_gen_src;
set $cdi $upstream_http_x_cd_info;
resolver 8.8.8.8 ipv6=off;
proxy_method GET;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $host;
more_clear_input_headers 'Authorization';
proxy_set_header "cookie" "";
proxy_set_header "content-type" "";
proxy_set_header "content-length" "";
if ($cdi) {
more_set_headers -s 200 'Content-Disposition: $cdi';
}
proxy_pass $1://s3.timeweb.cloud/$2;
proxy_intercept_errors on;
error_page 403 404 500 502 503 504 = /$new_uri;
}
# block everything else
location ~* .*$ {
deny all;
}
}
#