Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ValidateOriginName ¶
ValidateOriginName ensures the origin name is permitted against the dictionary of restricted words
Types ¶
type Options ¶
type Options struct {
// HTTP and Proxy Configurations
//
// Hosts identifies the frontend hostnames this origin should handle (virtual hosting)
Hosts []string `toml:"hosts"`
// OriginType describes the type of origin (e.g., 'prometheus')
OriginType string `toml:"origin_type"`
// OriginURL provides the base upstream URL for all proxied requests to this origin.
// it can be as simple as http://example.com or as complex as https://example.com:8443/path/prefix
OriginURL string `toml:"origin_url"`
// TimeoutSecs defines how long the HTTP request will wait for a response before timing out
TimeoutSecs int64 `toml:"timeout_secs"`
// KeepAliveTimeoutSecs defines how long an open keep-alive HTTP connection remains idle before closing
KeepAliveTimeoutSecs int64 `toml:"keep_alive_timeout_secs"`
// MaxIdleConns defines maximum number of open keep-alive connections to maintain
MaxIdleConns int `toml:"max_idle_conns"`
// CacheName provides the name of the configured cache where the origin client will store it's cache data
CacheName string `toml:"cache_name"`
// CacheKeyPrefix defines the cache key prefix the origin will use when writing objects to the cache
CacheKeyPrefix string `toml:"cache_key_prefix"`
// HealthCheckUpstreamPath provides the URL path for the upstream health check
HealthCheckUpstreamPath string `toml:"health_check_upstream_path"`
// HealthCheckVerb provides the HTTP verb to use when making an upstream health check
HealthCheckVerb string `toml:"health_check_verb"`
// HealthCheckQuery provides the HTTP query parameters to use when making an upstream health check
HealthCheckQuery string `toml:"health_check_query"`
// HealthCheckHeaders provides the HTTP Headers to apply when making an upstream health check
HealthCheckHeaders map[string]string `toml:"health_check_headers"`
// Object Proxy Cache and Delta Proxy Cache Configurations
// TimeseriesRetentionFactor limits the maximum the number of chronological
// timestamps worth of data to store in cache for each query
TimeseriesRetentionFactor int `toml:"timeseries_retention_factor"`
// TimeseriesEvictionMethodName specifies which methodology ("oldest", "lru") is used to identify
//timeseries to evict from a full cache object
TimeseriesEvictionMethodName string `toml:"timeseries_eviction_method"`
// BackfillToleranceSecs prevents values with timestamps newer than the provided
// number of seconds from being cached this allows propagation of upstream backfill operations
// that modify recently-served data
BackfillToleranceSecs int64 `toml:"backfill_tolerance_secs"`
// PathList is a list of Path Options that control the behavior of the given paths when requested
Paths map[string]*po.Options `toml:"paths"`
// NegativeCacheName provides the name of the Negative Cache Config to be used by this Origin
NegativeCacheName string `toml:"negative_cache_name"`
// TimeseriesTTLSecs specifies the cache TTL of timeseries objects
TimeseriesTTLSecs int `toml:"timeseries_ttl_secs"`
// TimeseriesTTLSecs specifies the cache TTL of fast forward data
FastForwardTTLSecs int `toml:"fastforward_ttl_secs"`
// MaxTTLSecs specifies the maximum allowed TTL for any cache object
MaxTTLSecs int `toml:"max_ttl_secs"`
// RevalidationFactor specifies how many times to multiply the object freshness lifetime
// by to calculate an absolute cache TTL
RevalidationFactor float64 `toml:"revalidation_factor"`
// MaxObjectSizeBytes specifies the max objectsize to be accepted for any given cache object
MaxObjectSizeBytes int `toml:"max_object_size_bytes"`
// CompressableTypeList specifies the HTTP Object Content Types that will be compressed internally
// when stored in the Trickster cache
CompressableTypeList []string `toml:"compressable_types"`
// TracingConfigName provides the name of the Tracing Config to be used by this Origin
TracingConfigName string `toml:"tracing_name"`
// RuleName provides the name of the rule config to be used by this origin.
// This is only effective if the Origin Type is 'rule'
RuleName string `toml:"rule_name"`
// ReqRewriterName is the name of a configured Rewriter that will modify the request prior to
// processing by the origin client
ReqRewriterName string `toml:"req_rewriter_name"`
// TLS is the TLS Configuration for the Frontend and Backend
TLS *to.Options `toml:"tls"`
// ForwardedHeaders indicates the class of 'Forwarded' header to attach to upstream requests
ForwardedHeaders string `toml:"forwarded_headers"`
// IsDefault indicates if this is the d.Default origin for any request not matching a configured route
IsDefault bool `toml:"is_default"`
// FastForwardDisable indicates whether the FastForward feature should be disabled for this origin
FastForwardDisable bool `toml:"fast_forward_disable"`
// PathRoutingDisabled, when true, will bypass /originName/path route registrations
PathRoutingDisabled bool `toml:"path_routing_disabled"`
// RequireTLS, when true, indicates this Origin Config's paths must only be registered with the TLS Router
RequireTLS bool `toml:"require_tls"`
// MultipartRangesDisabled, when true, indicates that if a downstream client requests multiple ranges
// in a single request, Trickster will instead request and return a 200 OK with the full object body
MultipartRangesDisabled bool `toml:"multipart_ranges_disabled"`
// DearticulateUpstreamRanges, when true, indicates that when Trickster requests multiple ranges from
// the origin, that they be requested as individual upstream requests instead of a single request that
// expects a multipart response // this optimizes Trickster to request as few bytes as possible when
// fronting origins that only support single range requests
DearticulateUpstreamRanges bool `toml:"dearticulate_upstream_ranges"`
// Synthesized Configurations
// These configurations are parsed versions of those defined above, and are what Trickster uses internally
//
// Name is the Name of the origin, taken from the Key in the Origins map[string]*OriginConfig
Name string `toml:"-"`
// Router is a mux.Router containing this origin's Path Routes; it is set during route registration
Router *mux.Router `toml:"-"`
// Timeout is the time.Duration representation of TimeoutSecs
Timeout time.Duration `toml:"-"`
// BackfillTolerance is the time.Duration representation of BackfillToleranceSecs
BackfillTolerance time.Duration `toml:"-"`
// ValueRetention is the time.Duration representation of ValueRetentionSecs
ValueRetention time.Duration `toml:"-"`
// Scheme is the layer 7 protocol indicator (e.g. 'http'), derived from OriginURL
Scheme string `toml:"-"`
// Host is the upstream hostname/IP[:port] the origin client will connect to when fetching uncached data,
// derived from OriginURL
Host string `toml:"-"`
// PathPrefix provides any prefix added to the front of the requested path when constructing the upstream
// request url, derived from OriginURL
PathPrefix string `toml:"-"`
// NegativeCache provides a map for the negative cache, with TTLs converted to time.Durations
NegativeCache map[int]time.Duration `toml:"-"`
// TimeseriesRetention when subtracted from time.Now() represents the oldest allowable timestamp in a
// timeseries when EvictionMethod is 'oldest'
TimeseriesRetention time.Duration `toml:"-"`
// TimeseriesEvictionMethod is the parsed value of TimeseriesEvictionMethodName
TimeseriesEvictionMethod evictionmethods.TimeseriesEvictionMethod `toml:"-"`
// TimeseriesTTL is the parsed value of TimeseriesTTLSecs
TimeseriesTTL time.Duration `toml:"-"`
// FastForwardTTL is the parsed value of FastForwardTTL
FastForwardTTL time.Duration `toml:"-"`
// FastForwardPath is the paths.Options to use for upstream Fast Forward Requests
FastForwardPath *po.Options `toml:"-"`
// MaxTTL is the parsed value of MaxTTLSecs
MaxTTL time.Duration `toml:"-"`
// HTTPClient is the Client used by trickster to communicate with this origin
HTTPClient *http.Client `toml:"-"`
// CompressableTypes is the map version of CompressableTypeList for fast lookup
CompressableTypes map[string]bool `toml:"-"`
// RuleOptions is the reference to the Rule Options as indicated by RuleName
RuleOptions *rule.Options `toml:"-"`
// ReqRewriter is the rewriter handler as indicated by RuleName
ReqRewriter rewriter.RewriteInstructions
}
Options is a collection of configurations for Origins proxied by Trickster
func NewOptions ¶
func NewOptions() *Options
NewOptions will return a pointer to an OriginConfig with the default configuration settings
Click to show internal directories.
Click to hide internal directories.