Using the nginx recommended config from https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/
The following config works. Please note the following considerations
- You need to tell Nginx to send all requests for /robots.txt and /wp-sitemap*.xml to WordPress
- Make sure you don't put your blocks for adding expires headers for xml before the
location ~* /[wp\-]*sitemap.*\.xml {
block otherwise you will see a raw Nginx File not found error.
# Upstream to abstract backend connection(s) for php
upstream php {
server unix:/var/run/php-fpm/cgi.sock;
}
server {
## Your website name goes here.
server_name domain.tld;
## Your only path reference.
root /var/www/wordpress;
## This should be in your http block and if it is, it's not needed here.
index index.php;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location ~* /[wp\-]*sitemap.*\.xml {
try_files $uri $uri/ /index.php$is_args$args;
# return 200 "Match found \n";
allow all;
log_not_found off;
access_log off;
}
location = /robots.txt {
try_files $uri $uri/ /index.php$is_args$args;
allow all;
log_not_found off;
access_log off;
}
location / {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't break when using query string
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass php;
#The following parameter can be also included in fastcgi_params file
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
0 Comments