You can quickly use Nginx as a proxy image server. For your server security, you can use ‘nginx-accesskey’ module.
Configuration example:
server {
listen a.b.c.d:443 rcvbuf=64000 sndbuf=120000 backlog=4096 ssl http2;
server_name mydomain.tld www.mydomain.tld;
keepalive_timeout 60;
ssl on;
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers 'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!RC4';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:TLSSL:30m;
ssl_session_timeout 60m;
ssl_buffer_size 4k;
ssl_certificate /etc/letsencrypt/live/mydomain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.tld/privkey.pem;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
more_set_headers "X-Secure-Connection: true";
add_header Strict-Transport-Security max-age=315360000;
# enables compression of two or more adjacent slashes in a URI into a single slash.
merge_slashes off;
# image proxy to http
location ~ /(?<r>http://.*) {
# if you have multiple ip addresses configured on your dedicated server and you want to bind a certain IP
# proxy_bind a.b.c.d;
resolver 8.8.4.4 8.8.8.8 4.2.2.2 valid=3600s ipv6=off;
proxy_set_header Referer "";
proxy_pass $r;
expires 10y;
}
# image proxy to https
location ~ /(?<r>https://.*) {
# if you have multiple ip addresses configured on your dedicated server and you want to bind a certain IP
# proxy_bind a.b.c.d;
resolver 8.8.4.4 8.8.8.8 4.2.2.2 valid=3600s ipv6=off;
proxy_set_header Referer "";
proxy_pass $r;
expires 10y;
}
}
How can I use? That’s simple!
https://yourdomainname.tld/http(s)://remotedomain.tld/imagepath/imagename.ext