Skip to content

markeq/wordpress-nginx

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WordPress Nginx

This repository contains the Nginx configurations used within the series Hosting WordPress Yourself. It contains best practices from various sources, including the WordPress Codex and H5BP. The following example sites are included:

  • singlesite.com - WordPress single site install (no SSL or page caching)
  • ssl.com - WordPress on HTTPS
  • fastcgi-cache.com - WordPress with FastCGI caching
  • ssl-fastcgi-cache.com - WordPress on HTTPS with FastCGI caching
  • multisite-subdomain.com - WordPress Multisite install using subdomains
  • multisite-subdirectory.com - WordPress Multisite install using subdirectories

Looking for a modern hosting environment provisioned using Ansible? Check out WordPress Ansible.

Usage

You can use these sample configurations as reference or directly by replacing your existing nginx directory. Follow the steps below to replace your existing nginx configuration.

Backup any existing config:

sudo mv /etc/nginx /etc/nginx.backup

Clone the repo:

sudo git clone https://github.com/A5hleyRich/wordpress-nginx.git /etc/nginx

Symlink the default file from sites-available to sites-enabled, which will setup a catch-all server block. This will ensure unrecognised domains return a 444 response.

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

Copy one of the example configurations from sites-available to sites-available/yourdomain.com:

sudo cp /etc/nginx/sites-available/singlesite.com /etc/nginx/sites-available/yourdomain.com

Edit the site accordingly, paying close attention to the server name and paths.

To enable the site, symlink the configuration into the sites-enabled directory:

sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/yourdomain.com

Test the configuration:

sudo nginx -t

If the configuration passes, restart Nginx:

sudo /etc/init.d/nginx reload

Directory Structure

This repository has the following structure, which is based on the conventions used by a default Nginx install on Debian:

.
├── conf.d
├── global
    └── server
├── sites-available
├── sites-enabled

conf.d - configurations for additional modules.

global - configurations within the http block.

global/server - configurations within the server block. The defaults.conf file should be included on the majority of sites, which contains sensible defaults for caching, file exclusions and security. Additional .conf files can be included as needed on a per-site basis.

sites-available - configurations for individual sites (virtual hosts).

sites-enabled - symlinks to configurations within the sites-available directory. Only sites which have been symlinked are loaded.

Recommended Site Structure

The following site structure is used throughout this repository:

.
├── yourdomain1.com
    └── cache
    └── logs
    └── public
├── yourdomain2.com
    └── cache
    └── logs
    └── public

About

Nginx server configurations for WordPress

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • DIGITAL Command Language 87.0%
  • Nginx 13.0%