Skip to content

Instantly share code, notes, and snippets.

@wesort
Last active April 1, 2022 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wesort/9c7ad0b6f6817bb3e3f32e125a0b1c69 to your computer and use it in GitHub Desktop.
Save wesort/9c7ad0b6f6817bb3e3f32e125a0b1c69 to your computer and use it in GitHub Desktop.
The v2.Statamic part of nginx.conf file on forge.laravel.com
...
# FORGE CONFIG (DO NOT REMOVE!)
include forge-conf/example.com/server/*;
# For legacy URL redirect with query parameters
# - create a file called "legacy-redirect.map" with a new line for each redirect
# - example line: /old-url/with?query /new-url/without-a-query;
# - Add the following BEFORE the server block, update the path and uncomment the include line
map $uri$is_args$args $new_uri {
default 0;
# include /home/forge/example.com/legacy-redirects.map;
}
# Start selecting and copying below
#################################################
# Edit path below
error_log /var/log/nginx/example.com-error.log error;
# If a redirect (from map above)
# if ($new_uri) {
# return 301 $new_uri;
# }
# Start: Statamic specific
# Dynamically set the try_files locations.
# Statically cached files should only be loaded for GET requests.
set $try_files @default;
if ($request_method = GET) {
set $try_files @static;
}
# The files to try when its a potentially static cache request (ie. a GET request)
# static_caching_ignore_query_strings: false
# location @static {
# try_files /static${uri}_${query_string}.html @default;
# }
# static_caching_ignore_query_strings: true
location @static {
try_files /static${uri}_.html @default;
}
# The files to try when it's not a static cache request (ie. anything other than GET)
location @default {
try_files $uri $uri/ /index.php?$query_string;
}
location / {
try_files $uri $try_files; # Use the dynamically assigned locations from above.
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_page 404 /index.php;
# Ensure php version number correct (otherwise will cause 502 error)
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
# Block access to hidden files (except the /.well-known/ dir)
location ~ /(?!.well-known)(\.)\w+ {
deny all;
return 404;
}
# Block access to Statamic, content, and cache locations
location ~ ^\/(statamic|local|(site\/(?!themes))) {
deny all;
return 404;
}
# Enable gzip compression
gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
gzip_vary on;
# Expire headers on static assets
# Media: images, icons, video, audio, HTC
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc|eot|ttf|woff|woff2)$ {
try_files $uri /index.php?$query_string;
expires 1y;
access_log off;
add_header Cache-Control "public";
}
# CSS and Javascript
location ~* \.(?:css|js)$ {
try_files $uri /index.php?$query_string;
expires 1y;
access_log off;
add_header Cache-Control "public";
}
#################################################
# End selecting and copying above:
}
# FORGE CONFIG (DO NOT REMOVE!)
include forge-conf/example.com/after/*;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment