alpakal
By:
alpakal

Nginx /sites-available/default configuration does not have any effect

June 21, 2016 2.2k views
Nginx WordPress DigitalOcean Ubuntu

Hello,

I am running wordpress with nginx and mariadb. Currently, I do not have any virtual hosts / server blocks (this is the only website running on the server right now) so I'm trying to use /etc/nginx/sites-available/default for configuration.

However, blocks that I add there has no effect on nginx whatsoever. For example, our site had an xmlrpc attack a couple of days ago, and adding

 location /xmlrpc.php {
      deny all;
    }

Had no effect, I could only remedy the situation using the routing tables.

Now I'm trying to set up W3 Total Cache and I have to add some configuration to nginx and again it does not have any effect. What am I doing wrong? Thanks for all your support.

Here is my current default configuration file for nginx;

server {

    listen 80;

    root /var/www/html;
    index index.php index.html index.htm;

    server_name magarazzi.com www.magarazzi.com;
    #return 302 $scheme://46.101.208.245$request_uri;
    #include /etc/nginx/global/wordpress.conf;

location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

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

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~ /\. {
        deny all;
    }

    location ~* /(?:uploads|files)/.*\.php$ {
        deny all;
    }

    location /xmlrpc.php {
      deny all;
    }

# BEGIN W3TC Page Cache cache
location ~ /wp-content/cache/page_enhanced.*html$ {
    add_header Vary "Accept-Encoding, Cookie";
}
location ~ /wp-content/cache/page_enhanced.*gzip$ {
    gzip off;
    types {}
    default_type text/html;
    add_header Vary "Accept-Encoding, Cookie";
    add_header Content-Encoding gzip;
}
# END W3TC Page Cache cache
# BEGIN W3TC Browser Cache
gzip on;
gzip_types text/css text/x-component application/x-javascript application/javas$
# END W3TC Browser Cache
# BEGIN W3TC CDN
location ~ \.(ttf|ttc|otf|eot|woff|font.css)$ {
   add_header Access-Control-Allow-Origin "*";
}
# END W3TC CDN
# BEGIN W3TC Page Cache core
set $w3tc_rewrite 1;
if ($request_method = POST) {
    set $w3tc_rewrite 0;
}
if ($query_string != "") {
    set $w3tc_rewrite 0;
}
if ($request_uri !~ \/$) {
    set $w3tc_rewrite 0;
}
if ($http_cookie ~* "(comment_author|wp\-postpass|w3tc_logged_out|wordpress_log$
    set $w3tc_rewrite 0;
}
if ($http_cookie ~* "(w3tc_preview)") {
    set $w3tc_rewrite _preview;
}
set $w3tc_enc "";
if ($http_accept_encoding ~ gzip) {
    set $w3tc_enc _gzip;
}
if (!-f "$document_root/wp-content/cache/page_enhanced/$http_host/$request_uri/$
  set $w3tc_rewrite 0;
}
if ($w3tc_rewrite = 1) {
    rewrite .* "/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$$
}
# END W3TC Page Cache core

}
2 Answers

Just a quick jab at this without having dug into it, but typically you need to add a symlink to sites-available from sites-enabled (using ln -s).

Have another answer? Share your knowledge.