On 16/05/14 03:38, adambenayoun wrote:
My setup is nginx + php-fpm. I am running a web application on domain.com
and I am serving a wordpress configuration from domain.com/blog.
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 127.0.0.1:9000;
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
have.
--
Alan Chandler
http://www.chandlerfamily.org.uk
_______________________________________________
nginx mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx