Nginx “auto .dev” setup won’t load WordPress properly

Following this guide (http://blog.evan.pro/how-to-set-up-dynamic-virtual-hosts-for-web-development), I’m trying to set up a localhost / nginx config that allows me to easily run environments without adding an individual entry for each (with the help of dnsmasq).
When I run nginx and access either site by sitename.dev, the sites that are using WordPress doesn’t seem to run. I figure there is something I’m missing in the nginx config,

worker_processes  1;

error_log  /usr/local/etc/nginx/logs/error.log debug;

events {
    worker_connections  1024;
}

http {
    include             mime.types;
    default_type        application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /usr/local/etc/nginx/logs/access.log  main;

    sendfile            on;

    keepalive_timeout   65;

    index index.html index.php;

    server {
        listen 80;
        server_name .dev;

        # dynamic vhosts for development
        set $basepath "/var/www";

        set $domain $host;
        if ($domain ~ "^(.*).dev$") {
            set $domain $1;
        }
        set $rootpath "${domain}";
        if (-d $basepath/$domain/public) {
            set $rootpath "${domain}/public";
        }
        if (-d $basepath/$domain/httpdocs) {
            set $rootpath "${domain}/httpdocs";
        }
        if (-d $basepath/$domain/web) {
            set $rootpath "${domain}/web";
        }
        if (-f $basepath/$domain/index.php) {
            set $rootpath $domain;
        }
        if (-f $basepath/$domain/index.html) {
            set $rootpath $domain;
        }

        root $basepath/$rootpath;

        # enable PHP
        index index.php app.php index.html;
        location / {
            index index.php;
            error_page 404 = @indexphp;
            include   /usr/local/etc/nginx/conf.d/php-fpm;
            try_files $uri $uri/ /index.php?$args;
        }
        location @indexphp {
            rewrite ^(.*)$ /index.php$1;
        }
        location ~ ^(.+.php)(?:/.+)?$ {
            expires off;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_split_path_info ^(.+.php)(/.*)$;
            include fastcgi_params;
        }

        # block .ht* access
        location ~ /.ht {
            deny all;
        }
    }
}

For example, accessing mynewproject.dev gives me a 200 OK but nothing is loaded. Accessing someotherproject.dev which doesn’t use WordPress (but does use a server language like PHP), I see the site correctly displayed.

Related posts

Leave a Reply

1 comment

  1. Chech the following

    1) If you have used a wordpress inside a folder then you have to append it to your set $basepath “/var/www”;

    2) Post your error log.