Skip to content

System Integration

CDN Integration

How To Integrate LeoFS With CDN

There is nothing special to do for integrating LeoFS with CDN1. Since almost CDN service providers take care of a CacheControl Header received from an origin to determine how long a file should be cached on their edge servers, so if you want to modify TTL according to URLs, you can do it by using http_custom_header.conf.

How To Use http_custom_header.conf

Append the following line to leo_gateway.conf which contains a LeoGateway's directory. Arrange the http_custom_header.conf into the path specified at leo_gateway.conf.

1
2
## HTTP custom header configuration file path
http.headers_config_file = ./etc/http_custom_header.conf

How To Write http_custom_header.conf

The syntax is a subset of Nginx2 configuration. You can use location contexts to specify TTL and add any headers to the path.

1
2
3
4
5
location bucket/static {
    expires    12h;
    add_header Cache-Control public;
    add_header X-OriginalHeader OriginalValue;
}

In this case, assuming that a CDN service already has been enabled, and there is a file at bucket/static/path_to_file, if a user browses that file via the CDN. The CDN will receive a response from a LeoFS system with customized Http headers.

1
2
Cache-Control: public, max-age=43200;
X-OriginalHeader: OriginalValue;

How to Test whether a conf file has any errors

You can do it using the leo_gateway startup script like the following.

1
# ./bin/leo_gateway test_http_conf

How to Reload a conf file on the fly

You can do it using the leo_gateway startup script like the following.

1
# ./bin/leo_gateway reload_http_conf

Use Cases

Specify TTL by the bucket.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
location bucket1 {
    expires    1h;
    add_header Cache-Control public;
}
location bucket2 {
    expires    1d;
    add_header Cache-Control public;
}
location bucket3 {
    expires    1h30m;
    add_header Cache-Control private;
}

Appendix

Syntax for the expire field

LeoFS supports a part of measurement units which can be used in Nginx configuration. Following time intervals can be specified.

1
2
3
4
s: seconds
m: minutes
h: hours
d: days

List of verified CDN services

LeoFS Team tested the following CDN services with LeoFS. We recognize that other CDN services also should work.

Playing video files stored in LeoFS

Since version 1.3.8, LeoFS has supported the HTTP Range header in more precise way than ever so that almost all streaming media clients supporting the progressive download can play video files stored in LeoFS without any hassles. However since LeoFS has not been designed to be placed in DMZ, we'd strongly recommend you put some reverse proxy software in front of LeoFS if you plan to use LeoFS as such use cases in production environment.