Setting up Wordpress and Rails in Nginx

I have a nginx application for a Rails application that works great for me. Now I want to move the Wordpress blog from blog.website.comto website.com/blog, so web crawlers see it as part of the site.

I created a symlink in the Rails app directory public/and added the following nginx configuration:

# Rails server
server {
    root /project/path/current/public;
    server_name project.com;
    passenger_enabled on;
    rails_env production;
    client_max_body_size 20m;

    if ($http_x_forwarded_proto != 'https') {
        return 301  https://$host$request_uri;
    }

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

        if (!-e $request_filename) {
            rewrite ^.+?(/blog/.*.php)$ $1 last;
            rewrite ^ /blog/index.php last;
        }
    }

    location ~ \.php$ {
    try_files $uri =404;
    fastcgi_intercept_errors on;
    include fastcgi_params;
    fastcgi_index  index.php;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    }
}

This works great. But I would like to skip the symlink. I want nginx to be routed directly to the wordpress directory. I tried changing the block /blogto:

location ^~ /blog {
  root /home/ubuntu/apps/blog;
  index    index.html  index.php;
  try_files $uri $uri/ /blog/index.php?q=$uri&$args;

  if (!-e $request_filename) {
    rewrite ^.+?(/blog/.*.php)$ $1 last;
    rewrite ^ /blog/index.php last;
  }
}

This works, since I am correctly redirected to the wordpress folder, but my server does not know what to do with php files and sends them to my browser as download files.

\.php$ /blog, 404.

?

location ^~ /blog {
  root /home/ubuntu/apps/blog;
  index    index.html  index.php;
  try_files $uri $uri/ /blog/index.php?q=$uri&$args;

  if (!-e $request_filename) {
    rewrite ^.+?(/blog/.*.php)$ $1 last;
    rewrite ^ /blog/index.php last;
  }

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_intercept_errors on;
    include fastcgi_params;
    fastcgi_index  index.php;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
  }
}
+3
1

, nginx , server.

server {
    location / {
        proxy_pass http://localhost:82/;
    }

    location /blog {
        root /var/proj/blog/current;
        fastcgi_intercept_errors on;
        include fastcgi_params;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
    }
}
# Rails server                                                                                                                                                                                                                             
server {
    listen 82;
    root /var/proj/site/current/public;
    server_name site.com;
    passenger_enabled on;
    rails_env staging;
    client_max_body_size 20m;

    # other configuration
}
+1

All Articles