php and locations with regex (round 2)
Alejandro Vartabedian
lists at webservice.com.uy
Tue Oct 23 14:44:21 MSD 2007
(trying to pay attention to the data i posting...)
well, i think i found a behavior pattern with my problem about regexed
locations and php scripts.
i tried very simple tests to figure out the behavior i getting from the
server.
the case is this:
_ 2 subdirs, app1 and app2
_ 2 files in each subdir index.html (hello world) and index.php (phpinfo)
_ 2 different locations configs, with and without regex
_ 2 different indexes en each app subdir, app1->index.php and
app2->index.html
config 1:
server {
listen 80;
server_name www.beta; #somename alias another.alias;
# access_log /var/log/nginx/beta.access.log;
location / {
root /home/website/beta.ws/webroot/;
index index.php index.html index.htm;
}
location /app1/ {
root /home/website/beta.ws/webroot/;
index index.php index.html index.htm;
}
location /app2/ {
root /home/website/beta.ws/webroot/;
index index.html index.htm;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:8888
#
location ~ .php$ {
fastcgi_pass 127.0.0.1:8888;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
/home/website/beta.ws/webroot$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
the behavior is as expected:
http://www.beta/app1/ => index.php's phpinfo output
http://www.beta/app2/ => index.html's html hello world output
http://www.beta/app1/index.php => index.php's phpinfo output
http://www.beta/app2/index.php => index.php's phpinfo output
until now all is ok.
now the config with a _minimal_ regex variation:
server {
listen 80;
server_name www.beta; #somename alias another.alias;
# access_log /var/log/nginx/beta.access.log;
location / {
root /home/website/beta.ws/webroot/;
index index.php index.html index.htm;
}
location ~ ^/(app1)/ {
root /home/website/beta.ws/webroot/;
index index.php index.html index.htm;
}
location ~ ^/(app2)/ {
root /home/website/beta.ws/webroot/;
index index.html index.htm;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:8888
#
location ~ .php$ {
fastcgi_pass 127.0.0.1:8888;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
/home/website/beta.ws/webroot$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
the behavior isn't as expected:
http://www.beta/app1/ => BIN file to download, 13ax1epp.bin containing
the index.php source code
http://www.beta/app2/ => index.html's html hello world output
http://www.beta/app1/index.php => index.php's source code with a correct
mime recognition
http://www.beta/app2/index.php => index.php's source code with a correct
mime recognition
well, it seems that as an automatic index the php file is returned with
some internal file name? with a .bin extension for download, containing
the script source code.
but if it's called directly by the browser url it's returned with the
correct name but without been parsed by the fastcgi.
i hope it could be of help.
More information about the nginx
mailing list