Forum: NGINX location expression - PHP treated as binary file

Posted by technoplague (Guest)
on 2012-09-25 05:04
(Received via mailing list)
Hi,

Having following configuration, PHP files, if requested from /junk or 
/pub
locations, are treated as binary. Sample request - domain.com/pub/i.php 
->
file is downloaded to PC instead of executing.

Have no problems serving PHP files from other locations. Having separate
locations for /pub /junk with autoindex also works, however my intention 
is
to combine them in one expression.

upstream www-default {
        server unix:/dev/shm/www-default.sock;
}

server {
        listen 80;
        server_name _;
        index index.php index.html;
        fastcgi_index index.php;
        root /data/www/default/htdocs;
        charset utf-8;
        access_log /data/www/default/logs/frontend/access.log;
        error_log /data/www/default/logs/frontend/error.log;
        client_max_body_size 8m;

        location ~* \.(jpg|jpeg|gif|css|png|js|swf|ico)$ {
            expires max;
        }

        location / {
            try_files $uri $uri/ /index.html;
        }

        location ~ (/\.svn|/\.ht) {
            deny all;
        }

        location ~* ^/(pub/|junk/) {
            autoindex on;
        }

        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(.*)$;
            fastcgi_pass www-default;
            fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            include /etc/nginx/fastcgi_params;
        }
}

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?2,231018,231018#msg-231018
Posted by Edho Arief (Guest)
on 2012-09-25 05:25
(Received via mailing list)
On Tue, Sep 25, 2012 at 10:04 AM, technoplague <nginx-forum@nginx.us> 
wrote:
> Hi,
>
> Having following configuration, PHP files, if requested from /junk or /pub
> locations, are treated as binary. Sample request - domain.com/pub/i.php ->
> file is downloaded to PC instead of executing.
>
> Have no problems serving PHP files from other locations. Having separate
> locations for /pub /junk with autoindex also works, however my intention is
> to combine them in one expression.
>

That's because when both locations are regexp, the first match is used
while when it's regexp and normal, regexp is used. Try moving the php
block to the top.

Check this reference: http://wiki.nginx.org/HttpCoreModule#location

(it would be nice if the order list is also copied to official docs.
The current one which describes it in prose form is harder to read)
Posted by technoplague (Guest)
on 2012-09-25 06:03
(Received via mailing list)
Thanks! This seemed to do the trick

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?2,231018,231024#msg-231024
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.