Rodando o roundcube ao lado do passageiro no nginx

1

Eu recentemente tentei instalar o passageiro no nginx. A instalação funciona e tudo está bem. No entanto, gostaria de executar o webmail roundcube no meu servidor também.

Basicamente, meu problema é que o nginx tem a diretiva root definida para o app do passageiro:

root /home/me/www/hello/public

e roundcube é criado como um symlink no servidor como:

/home/me/www/webmail

Minha pergunta como faço para que a url www.my-server.com se refira à raiz normal, mas www.my-server.com/webmail para se referir à pasta roundcube?

Eu tentei variações do seguinte no meu nginx.conf sem sorte:

location /webmail/ {
    #root /home/me/www;
    alias /home/me/www;
    try_files $uri /index.php;
    passenger_enabled off;
}

A configuração acima resulta em 403 proibido ao usar www.my-server.com/webmail e Arquivo não encontrado ao usar o URI: www.my-server.com/webmail/index.php.

Alguma idéia?

    
por Kenneth 10.04.2013 / 14:32

1 resposta

1

Isso foi um pouco complicado, mas encontrei a solução na documentação do nginx sobre a localização .

Como existe uma diretiva de localização correspondente aos arquivos .php, isso terá precedência sobre o / webmail / location e, como isso não declara um local raiz, a raiz global será usada, o que ainda aponta para a pasta passageiro.

A solução foi adicionar uma diretiva root ao local de correspondência do php e limitar a execução do php ao caminho do webmail, assim:

index index.html index.htm index.php

location /webmail/ {
    root /home/me/www;
}

location ~ /webmail/.*\.php$ {
    root /home/me/www;
    ...
}

Agora tudo funciona.

    
por 10.04.2013 / 15:52