Como obtenho uma localização Nginx non-root (“/”) para servir arquivos?

2

Eu sou um novato em Nginx. Eu aluguei um pequeno VPS com o Ubuntu 12.04 para testar. Eu não aluguei nenhum domínio, então eu faço solicitações diretamente usando o ip. Para esta questão, vamos supor que o ip é 209.208.26.89 . Instalou o último Nginx estável do oficial ppa.

Depois de instalar o Nginx e verificá-lo funcionando ok (indo com o meu navegador para http://209.208.26.89 ) eu removi a configuração padrão de / etc / nginx / sites-enabled. Eu usei essa configuração primeiro:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /home/www-data/public-www;
        index index.html index.htm; #index.html is inside /home/www-data/public-www

        server_name 209.208.26.89; #remember, no domain

        location /example {
                root /home/www-data/public-www/example;
                index hello.html; #hello.html is inside /home/www-data/public-www/example
                try_files $uri $uri/ =404;
        }
}

Todos os diretórios e permissões estão definidos corretamente.

Quando acessei http://209.208.26.89/example , fui recebido com um erro 404. O mais estranho é que acessar o http://209.208.26.89/ renderia o arquivo hello.html.

Como isso é suposto acontecer? Estou configurando esse arquivo para o local /example !

No entanto, tentei com isso:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /home/www-data/public-www;
        index index.html index.htm;

        server_name 209.208.26.89; #remember, no domain

        location /example {
                alias /home/www-data/public-www/example; #HERE'S THE CHANGED LINE
                index hello.html;
                try_files $uri $uri/ =404;
        }
}

Usando essa configuração, http:// 209.208.26.89/example produzirá corretamente hello.html. MAS http:// 209.208.26.89 produzirá o mesmo arquivo.

Para deixar claro, o que quero fazer é: quando solicitar http:// 209.208.26.89/example Nginx deve me servir /home/www-data/public-www/example/example.html. Eu fiz isso com a minha segunda configuração, com a desvantagem de ser servidor também em http:// 209.208.26.89 . Mas meu segundo requisito é 'http: // 209.208.26.89/' para me servir nada (deve retornar 404).

Tenho certeza de que estou sentindo falta de algo óbvio, mas nenhum guia ou documentação parece me apontar na direção certa. Alguém pode me ajudar a entender o que está acontecendo?

    
por Fabzter 08.01.2014 / 05:23

1 resposta

1

Eu acredito que isso é causado por essa linha:

root /home/www-data/public-www;

link

você pode remover isso ou especificar em outro lugar.

    
por 10.07.2014 / 03:08