Nginx: location 404 com try_files sob um diretório raiz diferente

1

Eu estou no processo de mover um wiki que eu administro (practicalplants.org) para um novo servidor rodando o Nginx. Estou acostumado com o Apache; esta é minha primeira vez trabalhando com o Nginx e estou tendo problemas para adaptar as reescritas e aliases que eu configurei no Apache. O layout do diretório é o seguinte

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

Como você pode ver, a solução sso tem seu próprio diretório raiz de aplicativo acessível publicamente, que estou tentando definir como root para a diretiva location , mas parece que o seguinte try_files ainda tenta para voltar para o server root .

Aqui está minha configuração:

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

Esta configuração me dá um 404 se eu navegar para / sso

Existe algo obviamente errado aqui?

    
por Andru 12.03.2013 / 09:53

1 resposta

2

Você precisa usar alias em vez de root aqui.

Sua configuração existente tenta carregar /var/www/v-practicalplants/sso/public/sso/index.php , o que provavelmente não é o que você deseja. Independentemente de qual location está, root sempre especifica o documento root , ou seja, a localização de / .

Use alias para especificar a localização do location .

location /sso/ {
    alias /var/www/v-practicalplants/sso/public;
    try_files.....
    
por 12.03.2013 / 09:57

Tags