98 lines
2.7 KiB
Nginx Configuration File
98 lines
2.7 KiB
Nginx Configuration File
server_tokens off;
|
|
|
|
index index.php index.html;
|
|
charset UTF-8;
|
|
default_type text/html;
|
|
|
|
gzip on;
|
|
gzip_disable "msie6";
|
|
|
|
gzip_vary on;
|
|
gzip_proxied any;
|
|
gzip_comp_level 6;
|
|
gzip_buffers 16 8k;
|
|
gzip_min_length 10;
|
|
gzip_http_version 1.1;
|
|
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/png image/gif image/jpeg;
|
|
|
|
client_max_body_size 1024M;
|
|
|
|
# Force HTTPS on Heroku
|
|
if ($http_x_forwarded_proto = "http") {
|
|
return 301 https://$host$request_uri;
|
|
}
|
|
|
|
include /app/config/nginx.d/*.conf;
|
|
|
|
# Force installation to /wp-admin/install.php so siteurl is always correct
|
|
rewrite ^/wp/wp-admin/install.php(.*) $scheme://$http_host/wp-admin/install.php permanent;
|
|
|
|
# Rewrite rules to allow for an application-like wordpress directory structure
|
|
if (!-e $request_filename) {
|
|
rewrite ^/wp-admin$ $scheme://$http_host/wp-admin/ permanent;
|
|
rewrite ^/(wp-.*.php)$ /wp/$1 last;
|
|
rewrite ^/(wp-(content|admin|includes).*) /wp/$1 last;
|
|
}
|
|
|
|
# Enable XML-RPC for WordPress
|
|
rewrite ^/(xmlrpc\.php)$ /wp/$1 last;
|
|
|
|
# Hide often probed WordPress file so that finding out the WordPress install
|
|
# and version would not be too easy
|
|
location /wp/readme.html {
|
|
return 404;
|
|
}
|
|
|
|
location = /favicon.ico {
|
|
log_not_found off;
|
|
access_log off;
|
|
}
|
|
|
|
location = /robots.txt {
|
|
allow all;
|
|
log_not_found off;
|
|
access_log off;
|
|
}
|
|
|
|
location = /ads.txt {
|
|
allow all;
|
|
log_not_found off;
|
|
access_log off;
|
|
}
|
|
|
|
# Block direct access to WooCommerce digital downloads. They can be accessed
|
|
# via the X-Accel-Redirect mechanism for fast and protected downloads.
|
|
location /wp/wp-content/uploads/woocommerce_uploads/ {
|
|
internal;
|
|
}
|
|
|
|
# Deny access to any other dot file
|
|
# ~ matches using regular expression all requests that contain '/.'
|
|
# anywhere in the URL, eg '/.htaccess' and '/wp-content/.htpasswd'.
|
|
# This regex will override all non-regex rules, except ^~ rules due
|
|
# how to Nginx location parsing and priorities works.
|
|
location ~ \/\. {
|
|
deny all;
|
|
}
|
|
|
|
location ~* ^.+\.(css|js|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|jpg|jpeg|gif|png|webp|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
|
|
try_files $uri =404;
|
|
expires max;
|
|
add_header Pragma "public";
|
|
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
|
|
access_log off;
|
|
}
|
|
|
|
# Use actual file if exists, otherwise pass request to WordPress
|
|
# Last rule: match all requests (= URLs that start with /)
|
|
location / {
|
|
try_files $uri $uri/ /index.php?$args;
|
|
}
|
|
|
|
# If front page is requested, skip all other regex and rewrite rules and
|
|
# pass request directly to WordPress (= URLS that are exactly /)
|
|
# Tip from https://www.scalescale.com/tips/nginx/nginx-location-directive/
|
|
location = / {
|
|
try_files $uri $uri/ /index.php?$args;
|
|
}
|