nginx serving php for download (previously: nginx multiple location alias 404)

Posted by torsten on Server Fault See other posts from Server Fault or by torsten
Published on 2013-11-05T23:01:04Z Indexed on 2013/11/09 9:58 UTC
Read the original article Hit count: 326

Filed under:
|
|

Im having issues with the alias location in the following configuration

server {
    listen       80;
    server_name  localhost;
    root         /srv/http/share;
    index        index.php;
    include      php.conf;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location /phpmemcachedadmin {
        alias /srv/http/phpmemcachedadmin;
    }

    location /webgrind {
        alias /srv/http/webgrind;
    }

}

while / works well, im getting a 404 for /webgrind and /phpmemcachedadmin. If i switch the root directory to /srv/http and alias the / location, die /phpmemcachedadmin and webgrind work, but not the / location.

UPDATE:

I managed the probems getting all location to work, so here is the updated config

#user html;
worker_processes  2;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include            mime.types;
    default_type       application/octet-stream;
    sendfile           on;
    keepalive_timeout  65;
    gzip               on;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root /srv/http/share;
            index index.php;
            try_files $uri $uri/ /index.php$is_args$args;
            include php.conf;
        }

        location /phpmemcachedadmin {
            root /srv/http;
            index index.php;
            try_files $uri $uri/ /index.php$is_args$args;
            include php.conf;
        }

        location /webgrind {
            root /srv/http;
            index index.php;
            try_files $uri $uri/ /index.php$is_args$args;
            include php.conf;
        }

    }

}

The php.conf looks like this:

location ~ \.php$ {
        try_files       $uri =404;
        fastcgi_pass    unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index   index.php;
        include         fastcgi.conf;
}

while the fastcgi.conf like this:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
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_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;

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;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

But there is a problem serving phpmemcachedadmin. If i call localhost/phpmemcachedadmin/index.php it works quite well (i get a log that i got served the file in access log). On the other hand, if i just call localhost/phpmemcachedadmin/ he serves me the file for download. Neither the error.log nor the access.log log anything when i get served the the file for download. Any ideas?

© Server Fault or respective owner

Related posts about php

Related posts about nginx