nginx: reescreve o URL mas tem o URL original armazenado em access.log como 200

1

Estou configurando um sistema de rastreamento de links, que (temporariamente) envolve adicionar / link / id / na frente da URL (como link ).

rewrite data/id/(.*) http://server/$1;

A solicitação é registrada como:

ip - - [17/Nov/2011:10:07:19 +0300] "GET /data/id/publication/id.html HTTP/1.1" 302 154 "-" "UA"'

Por alguma razão (mantendo a compatibilidade com AWStats), é necessário ter 200 logados ao invés de 302. (nginx permite obter 301 códigos fora da caixa com opção permanente, mas isso também é inadequado)

Quais são minhas opções aqui? A combinação de location { } e rewrite fará o trabalho?

UPDATE: o AWstats é capaz de compreender vários códigos de status, definindo ValidHTTPCodes="200 304 301" , consulte this < pergunta; meu problema está resolvido, mas a questão ainda está ativa - alguma maneira de reescrever o trabalho sem o código 301/302?

    
por kagali-san 17.11.2011 / 10:23

1 resposta

3

O Nginx está fazendo um redirecionamento do lado do cliente porque o alvo de redirecionamento tem http: // na URL - você pode fazer um redirecionamento do lado do servidor (o nginx relerá o novo URL e enviará o arquivo diretamente, com código 200) por tendo rewrite data/id/(.*) /$1;

    
por 17.11.2011 / 12:01