Skip to content

Instantly share code, notes, and snippets.

@section-io-gists
section-io-gists / normaliseAcceptEncoding.vcl
Created July 2, 2015 00:34
section.io VCL - Normalise Accept Encoding
#section.io VCL sample. Copy paste into your section.io account to implement instantly
#vcl_recv - copy this code into the section called sub vcl_recv
if (req.http.Accept-Encoding) {
if (req.http.Accept-Encoding ~ "gzip") {
set req.http.Accept-Encoding = "gzip";
} else if (req.http.Accept-Encoding ~ "deflate") {
set req.http.Accept-Encoding = "deflate";
} else {
unset req.http.Accept-Encoding;
#section.io VCL sample. Copy paste into your section.io account to implement instantly
#This code example requires you to use a Varnish version that has the GEO IP vmod installed
#Import vmod to do geoip on requests
import geoip;
#vcl_recv - copy this code into the section called sub vcl_recv
set req.http.X-Country-Code = geoip.country_code(regsub(req.http.X-Forwarded-For, ",.*",""));
@section-io-gists
section-io-gists / enforce_https.vcl
Created August 14, 2015 01:17
Enforce HTTPS with VCL
sub vcl_recv {
//Use req.proto instead of req.http.X-Forwarded-Proto if your varnish server isn't behind a load balancer
if ( req.http.X-Forwarded-Proto !~ "(?i)https") {
//The 750 number is arbitrary, you just need a unique number to check for in the vcl_synth sub
return (synth(750, ""));
}
}
sub vcl_synth {
if (resp.status == 750) {
@section-io-gists
section-io-gists / block_access.vcl
Created August 14, 2015 02:30
Block access to your site with VCL
sub vcl_recv {
if (req.http.User-Agent ~ "(?i)ima-naughty-bot") {
return (synth(403, "Forbidden"));
}
}
@section-io-gists
section-io-gists / cacheEverything.vcl
Created September 11, 2015 03:51
Cache both static and dynamic content (Great for sites with no personalisation)
#section.io VCL sample. Copy paste into your section.io account to implement instantly
#vcl_recv - copy this code into the section called sub vcl_recv
#Normalise Accept-Encoding
if (req.http.Accept-Encoding) {
if (req.http.Accept-Encoding ~ "gzip") {
set req.http.Accept-Encoding = "gzip";
} else if (req.http.Accept-Encoding ~ "deflate") {
set req.http.Accept-Encoding = "deflate";
@section-io-gists
section-io-gists / ISEPureVarnish
Last active September 23, 2015 04:42
section.io ISE template (for Magento)
# This is a basic VCL configuration file for varnish. See the vcl(7)
# man page for details on VCL syntax and semantics.
#
# Default backend definition. Set this to point to your content
# server.
#
backend default {
.host = "next-hop";
.port = "80";
.first_byte_timeout = 300s;
@section-io-gists
section-io-gists / starterConfig.vcl
Last active January 27, 2016 03:35
section.io VCL - Starter Config
#section.io VCL sample. Copy paste into your section.io account to implement instantly
#vcl_recv - copy this code into the section called sub vcl_recv
if (req.url ~ ".*\.(?:css|js|jpe?g|png|gif|ico|swf)(?=\?|&|$)") {
unset req.http.Cookie;
#Varnish <= 3.x calls this "return (lookup);"
return (hash);
}
#vcl_backend_response - copy this code into the section called sub vcl_backend_response
@section-io-gists
section-io-gists / performanceConfig.vcl
Last active January 27, 2016 03:35
section.io VCL - Performance Config
#section.io VCL sample. Copy paste into your section.io account to implement instantly
#vcl_recv - copy this code into the section called sub vcl_recv
if (req.http.Accept-Encoding) {
if (req.http.Accept-Encoding ~ "gzip") {
set req.http.Accept-Encoding = "gzip";
} else if (req.http.Accept-Encoding ~ "deflate") {
set req.http.Accept-Encoding = "deflate";
} else {
unset req.http.Accept-Encoding;
{
"proxychain": [
{
"name": "varnish",
"image": "varnish:4.0.3"
}
],
"environments": {
"Production": {
"origin": {
@section-io-gists
section-io-gists / gist:721981ee1462fad435ee2d303390f491
Created April 24, 2016 21:36
ModSecurity Rule Engine Initialization Change from DetectionOnly to On
# -- Rule engine initialization ----------------------------------------------
# Enable ModSecurity, attaching it to every transaction. Use detection
# only to start with, because that minimises the chances of post-installation
# disruption.
#
#SecRuleEngine DetectionOnly
SecRuleEngine On