Ignorando partes desnecessárias de URLs dentro da tag de localização do Nginx

1

Considere o seguinte arquivo de configuração do Nginx (Nginx versão 1.2.6 no Linux de 64 bits):

location / {
    root html/www.domain.com;
}
location /image/ {
    root html/static.domain.com;
}

Usando essa configuração, /index.html é coletado de html/www.domain.com/index.html ; /secure/profile.html foi coletado de html/www.domain.com/secure/profile.html e /image/logo.jpeg foi coletado de html/static.domain.com/image/logo.jpeg .

No entanto, as solicitações ao seguinte resultam em erros (compreensivelmente):

/index.html;affiliate=msn
/image/logo.jpef~partner=msnbc

Qual deve ser a configuração correta do Nginx para ignorar as partes da URL, como ;affiliate=msn e ~partner=msnbc ?

    
por manish.in.java 25.01.2013 / 11:10

2 respostas

0

Algo parecido com isto

    location / {
        try_files $uri $uri/index.html =404;
    }
    location ~ "(.*)[;~].*" {
        try_files $1 $1/index.html =404;
    }
    
por 25.01.2013 / 18:40
0

Alterou a configuração da seguinte forma para obter o comportamento desejado.

location /image/ {
    rewrite ^(/image/.*)[\;\,\~].*$ $1 break;
    root    html/static.domain.com;
}

Por favor, note que o ponto e vírgula deve ser escapado (\;), pois é um delimitador de instrução nos arquivos de configuração do Nginx.

    
por 27.01.2013 / 13:26

Tags