PHP via FastCGI in / and sub-directory location w/ different roots
Thilo-Alexander Ginkel
thilo at ginkel.com
Thu Nov 7 10:37:22 UTC 2013
Hi there,
I am currently somewhat stuck getting the following setup up and running:
I have one PHP web application residing in /usr/share/a that I'd like to
have available at /. This works as expected.
I have a second PHP web app residing in /var/www/b/public, that I'd like to
have available at /b.
My current ngnix (1.2.1) configuration looks like this:
-- 8< --
server {
listen *:443 ssl;
listen [::]:443 ;
[...]
root /usr/share/a;
index index.php;
location ~ ^/b/.*\.php$ {
rewrite ^/b(/.*) $1 break;
root /var/www/b/public;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location ~ ^/b/ {
root /var/www/b/public;
index index.php;
}
}
-- 8< --
/etc/nginx/fastcgi_params:
-- 8< --
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $uri?$args;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS $https;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
-- 8< --
I included the rewrite in location ~ ^/b/.*\.php$ because otherwise
nginx/php-fpm will look for the script /b/index.php in
/var/www/b/public/b/index.php, which has an extra "b/" in the path.
With the rewrite enabled, however, the PHP application guesses its own path
incorrectly issuing redirects to locations that leave out "/b'.
I would like to avoid symlinking /var/www/b into /usr/share/a.
Any ideas?
Thanks,
Thilo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20131107/df73b861/attachment.html>
More information about the nginx
mailing list