WordPress Permalinks on Nginx

If you’re running WordPress on Nginx, you may have an issue with WordPress permalinks. This article explains nicely what you need to do to configure Nginx. What the article failed to do is mention the Nginx configuration filename and its location. The filename is nginx.conf, and it’s usually located in the directory /usr/local/nginx/conf, /etc/nginx, or /usr/local/etc/nginx, depending on your Linux distro.

# WordPress installed on root directory
location / {
  index index.php index.html index.htm;
  try_files $uri $uri/ /index.php?$args;
}
 
# WordPress installed on /blog sub-directory
location /blog/ {
    try_files $uri $uri/ /blog/index.php?$args;
}

You need to reload Nginx for changes to take effect. For Ubuntu:

$ sudo service nginx restart
# or
$ sudo /etc/init.d/nginx restart

WordPress Permalinks on Nginx

You’ve abandoned Apache for a faster, newer and sleeker Nginx. Installation was a breeze. WordPress is just humming along until you start clicking links within WordPress. You realized the permalinks are broken, which is a biggie. So, here’s how you fix WordPress permalinks on Nginx.

WordPress on root directory

# Edit nginx config
sudo nano /etc/nginx/sites-available/default
# Add the following lines to the file.
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?args;
}

WordPress in a subdirectory under root

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

Restart Nginx

# must restart nginx for the changes to take effect
sudo nano service nginx restart