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.

I'm in the process of moving a wiki I administer (practicalplants.org) to a new server running Nginx. I'm accustomed to Apache; this is my first time working with Nginx and I'm having trouble adapting the rewrites and aliases I had set up in Apache. The directory layout is as follows

/html               (server root)
    /html/w         (mediawiki)
    /html/community (vanilla)
    /html/blog      (wordpress)
/sso                (Zend Framework SSO solution)
    /sso/public

As you can see, the sso solution has it's own publicly accessible application root directory, which I'm attempting to set as the root for the location directive, but it seems like the following try_files still attempts to fall back to the server root.

Here's my config:

server {
  server_name practicalplants.org;

  root /var/www/v-practicalplants/html;
  access_log /var/log/nginx/practicalplants.org-access.log;
  error_log /var/log/nginx/practicalplants.org-error.log;

  include /etc/nginx/biowikifarm_listen80_443.conf;
  include /etc/nginx/biowikifarm_generics.conf;
  include /etc/nginx/biowikifarm_generic_php.conf;

  disable_symlinks off;

  location = / {
    # Redirect domain-only access to wiki:
    rewrite "^[/]?$" /wiki/ permanent;
  }

  location /wiki {
    #rewrite "^/wiki[/]?([^?]*)(?:\?(.*))?" /w/index.php?title=$1&$args last;
    try_files $uri $uri/ /w/index.php?title=$uri&$args;
  }
  location /w/media {
    location ~ ^/w/media/thumb/(archive/)?[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ {
      try_files $uri @thumb_w;
    }
  }
  location @thumb_w {
    rewrite ^/w/media/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ /w/thumb.php?f=$1&width=$2;
    rewrite ^/w/media/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$ /w/thumb.php?f=$1&width=$2&archived=1;
    include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME  $document_root/w/thumb.php; fastcgi_pass php5-fpm-sock;
  }

  location /sso {
    root /var/www/v-practicalplants/sso/public;
    try_files $uri $uri/ /index.php
  }
}

This config gives me a 404 if I navigate to /sso

Is there something obviously wrong here?

share|improve this question

1 Answer 1

up vote 1 down vote accepted

You need to use alias instead of root here.

Your existing configuration tries to load /var/www/v-practicalplants/sso/public/sso/index.php, which is probably not what you want. Regardless of which location it's in, root always specifies the document root, i.e. the location of /.

Use alias instead to specify the location of the location.

location /sso/ {
    alias /var/www/v-practicalplants/sso/public;
    try_files.....
share|improve this answer
    
Thanks Michael :) –  Andru Mar 21 '13 at 15:36

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.