nginx serve arquivos estáticos e altera rota / caminho

3

Eu quero servir um arquivo estático com o nginx de um diretório como / data / content / video / de uma rota de URL totalmente diferente, como www.url.com/reports/video-name.mp4

Eu tentei várias regras e locais de reescrita, mas nada parece estar funcionando como pretendo, isso é possível?

isso funciona com o nome do vídeo como o único parâmetro de rota (por exemplo, www.url.com/video-name.mp4):

location ~ \.(mp4) {
        root /data/content/video;
        chunked_transfer_encoding on;
        proxy_buffering off;
        mp4;
        mp4_buffer_size 4M;
        mp4_max_buffer_size 10M;
}

Existe uma regra de reconfiguração ou regex que eu poderia usar para extrair o video-name.mp4 para que o arquivo que ele tenta exibir seja: /data/content/video/video-name.mp4 desta solicitação www.url.com/reports/video-name.mp4

    
por justin shores 20.07.2016 / 02:53

3 respostas

3

A chave para a resposta é provavelmente sua definição de local. Isso provavelmente não funcionará perfeitamente, mas deve lhe dar uma pista para resolver isso sozinho.

location ~* /reports/ {
  root /data/content/video;
  // etc
}

Sua pergunta não está muito clara, por isso, se isso não estiver respondendo à pergunta que você queria fazer, sugiro que edite a pergunta.

    
por 20.07.2016 / 03:47
3

Você não deve usar root dentro de location blocks, pois isso causa situações confusas.

Você precisa usar a diretiva alias . Com root , o servidor anexa o URI completo ao diretório especificado com a diretiva. Com alias , você pode anexar qualquer parte do nome do arquivo ao diretório.

Tente isto:

location ~ /reports/+.mp4$ {
    alias /data/content/video;
    ....
}
    
por 20.07.2016 / 10:00
0

Não tenho certeza se essa é a melhor opção, mas eu consegui fazer isso funcionar usando uma reescrita no bloco assim:

location ~ \.(mp4) {
        rewrite ^(.*)/reports/(.*)$ $1/$2;
        root /data/content/video;
        chunked_transfer_encoding on;
        proxy_buffering off;
        mp4;
        mp4_buffer_size 4M;
        mp4_max_buffer_size 10M;
}

Pensei em compartilhar.

    
por 24.07.2016 / 18:45

Tags