Skip to content

Instantly share code, notes, and snippets.

@shanecp
Last active December 22, 2017 15:39
Show Gist options
  • Save shanecp/78b1981729a676608a7af068099bf75f to your computer and use it in GitHub Desktop.
Save shanecp/78b1981729a676608a7af068099bf75f to your computer and use it in GitHub Desktop.
nginx Configuration for WordPress subfolders

Setup WordPress in nginx within a subfolder. This example does the redirect to a folder called /blog. So you can have one installation at / and another at /blog Change [sitename].dev to the domain.

server {
	listen 80;
	listen [::]:80;
	server_name     [sitename].com.au www.[sitename].com.au;
    	# redirect all http traffic to https
	return          301 https://www.$server_name$request_uri;
}

server {
    # listen 80;
    listen 443 ssl http2;
    server_name [sitename].dev;
    root "/home/vagrant/sites/[sitename]/public_html";

    index index.html index.htm index.php;
    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location /blog {
        try_files $uri $uri/ /blog/index.php?$query_string;
    }
    
    # redirect images for local development - disable these on production
    location ~ "^(?U)(.*)(/|/blog/)wp-content/uploads/(.*)$" {
        try_files $uri @prod_serv;
    }

    # Will redirect requests to your production server
    location @prod_serv {
        rewrite "^(?U)(.*)(/|/blog/)wp-content/uploads/(.*)$" "http://example.com$2wp-content/uploads/$3" redirect;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/[sitename].dev-error.log error;

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;


        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
    }

    location ~ /\.ht {
        deny all;
    }

    ssl_certificate     /etc/nginx/ssl/[sitename].dev.crt;
    ssl_certificate_key /etc/nginx/ssl/[sitename].dev.key;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment