Problemas com o ninx autoindex

2

Estou tentando configurar o nginx para que um determinado URL produza o índice de diretório de um determinado diretório em meu servidor. Atualmente é assim que meu default.conf se parece.

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location /files/ {
        root        /home/myfiles/Downloads;
        autoindex   on;
    }

No entanto, quando tento acessar mysite.com/files/ ou mysite.com/files, recebo um erro 403 Forbidden.

Olhando para o log de erros que vi

2012/01/08 16:23:18 [error] 17619#0: *1 "/home/myfiles/Downloads/files/index.html" is forbidden (13: Permission denied), client: some.ip.addr.ess, server: _, request: "GET /files/ HTTP/1.1",

Eu não quero que ele procure por arquivos / index.html, só quero o índice do diretório de Downloads. O que preciso mudar para que as coisas funcionem assim?

    
por Varun Madiath 08.01.2012 / 14:47

4 respostas

5

Verifique se o Nginx tem permissões executar para todos os diretórios na árvore de diretórios pai. No seu caso, o Nginx deve ter permissões de execução para / , /home , /home/myfiles , /home/myfiles/Downloads ou senão o Nginx não pode copiar para esses diretórios.

Uma maneira fácil de verificar isso é executar namei -l /home/myfiles/Downloads .

    
por 09.01.2012 / 08:51
6

Nesse caso, você precisa usar a diretiva alias em vez de root .

Ao usar root , uma solicitação para mysite.com/files/ procurará no diretório local /home/myfiles/Downloads/files/ de um arquivo de índice e, se não for encontrado, gerará automaticamente uma listagem de diretórios (desde que você tenha especificado a opção autoindex ) . Observe como o nginx acrescenta /files/ ao diretório raiz que você especificou.

Como para o seu caso você quer que /files/ seja um sinônimo para o seu diretório de download, você precisa usar alias /home/myfiles/Downloads/ no bloco de localização. Em seguida, qualquer solicitação para mysite.com/files/ será traduzida para o diretório /home/myfiles/Downloads/ (por exemplo, mysite.com/files/bigfile.gz se tornará /home/myfiles/Downloads/bigfile.gz ). Observe que o / no alias é necessário.

Consulte a documentação link para obter mais detalhes sobre o alias.

    
por 18.02.2012 / 12:52
1

hi eu também tenho erro de indexação automática. BTW: eu instalo o nginx usando um repo de terceiros.

Primeiro, apenas verifique o índice automático

/opt/tengine/sbin/nginx -V 2>&1 | grep auto

[root@sec002 tengine]# /opt/tengine/sbin/nginx -V 2>&1 | grep auto
            ngx_http_autoindex_module (static)

Minha configuração do servidor

server {
    listen 8082;
    server_name sec002.xxx.com;
    root /tmp;
    autoindex on;
    location / {
        root /tmp/php/;
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
    }
}

i browser sec002.xxx.com:8082, erro abaixo:

2016/01/07 16:09:26 [error] 4205#0: *1 "/tmp/php/index.html" is not found (2: No such file or directory), client: 192.168.2.13, server: sec002.xxx.com, request: "GET / HTTP/1.1", host: "sec002.xxx.com:8082"

Eu garanto que permissão de execução e usuário nginx estão certos.

Finalmente, desisto e recompino o pacote nginx by tar com o padrão. então é trabalhado

    
por 07.01.2016 / 09:26
0

De acordo com a documentação do nginx :
"A solicitação só atinge o ngx_http_autoindex_module quando o ngx_http_index_module não encontrou um arquivo de índice "

Se um index não estiver definido para um local, o padrão será esses valores: index index.html .

Remova o index.html de /home/myfiles/Downloads/files/ e ele deve exibir os arquivos em uma listagem de diretórios

    
por 08.01.2012 / 20:35