Serving wordpress from subdomain

Alan Chandler alan at
Fri May 16 05:11:43 UTC 2014

On 16/05/14 03:38, adambenayoun wrote:
> My setup is nginx + php-fpm. I am running a web application on
> and I am serving a wordpress configuration from
> The problem is that the web app is served from /var/www/domain/html/http and
> wordpress is located outside of the root directory:
> /var/www/domain/html/blog
> ...
I have been wrestling with a similar problem - except mine is worse, in 
that the applications running in a separate physical directory were php 
applications which required $_SERVER['DOCUMENT_ROOT']  to point to the 
actual physical directory for the real document root. I

>          location /blog {
>                  root /var/www/domain/html;
>                  try_files $uri $uri/ /blog/index.php?q=$1;
>          }
>          location ~ \.php(/|$) {
>                  try_files $uri =404;
>                  include /etc/nginx/fastcgi_params;
>                  fastcgi_split_path_info ^(.+\.php)(.*)$;
>                  fastcgi_param SCRIPT_FILENAME
> $document_root$fastcgi_script_name;
>                  fastcgi_param PATH_INFO $fastcgi_script_name;
>                  fastcgi_param SERVER_NAME $http_host;
>                  fastcgi_pass;

The problem here is that as nginx redirects to the second location block 
when it can't find the file with try_files and goes to /blog/index.php, 
it changes root back to the default

The way I solved the problem is

     location = /blog {
         rewrite ^ /blog/ permanent;

     location /blog/ {
         alias /home/alan/dev/blog/web/;
         index index.php;

     location ~ ^/blog/(.*\.php)$ {
         alias /home/alan/dev/blog/web/$1;
         include php-apps.conf;

and the include file (used becaise I have several similar apps in this 
area and each one is treated the same)

         include fastcgi_params;
         fastcgi_param DOCUMENT_ROOT /home/alan/dev/test-base;
         fastcgi_index index.php;
         fastcgi_intercept_errors on;
         fastcgi_pass unix:/var/run/php5-fpm-alan.sock;

There is a problem - which I don't really understand - that try_files 
does not work with alias. so I am not using it in my sub location blocks

I do have

     location / {
         try_files $uri $uri/ =404;

and with the whole thing in place I do get 404s when somebody attempts 
to access a non existent page.  I think in your situation, your location 
path equals the final elements of the physical filesystem path, so you 
could use root instead of alias and then include the try_files bits you 

Alan Chandler

More information about the nginx mailing list