location expression - PHP treated as binary file

technoplague nginx-forum at nginx.us
Tue Sep 25 03:04:07 UTC 2012


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
            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

More information about the nginx mailing list