Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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?

share|improve this question
    
you should switch on an check your logs. –  that guy from over there Nov 6 '13 at 7:13
    
2013/11/07 20:44:35 [error] 213#0: *1 open() "/srv/http/share404" failed (2: No such file or directory), client: 10.0.2.2, server: localhost, request: "GET /webgrind/ HTTP/1.1", host: "localhost:1080" (nginx is in a vbox with port forward 1080 => 80) –  torsten Nov 7 '13 at 19:45
add comment

2 Answers

change

try_files $uri $uri/ /index.php$is_args$args;

to

try_files $uri $uri/ /index.php$is_args$args /index.php;

as said here

share|improve this answer
    
nope, does not work. also add additionally $uri/index.php does not work..... –  torsten Nov 9 '13 at 8:42
    
try to remove try_files directive from your location ~ \.php$ { ... } leave just fastcgi_pass... –  user973254 Nov 9 '13 at 10:08
add comment
up vote 0 down vote accepted

I got it... i removed!!! the try_files statement... so my configutation for phpmemcachedadmin is:

    location /phpmemcachedadmin {
        root /srv/http;
        index index.php;
        include php.conf;
    }
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.