nginx: controle de log de acesso enquanto mantém o redirecionamento interno para o WordPress

2

Eu criei uma página do WordPress com permalink http://domain.tld/health_status para monitoramento de integridade do WordPress. É acessado com frequência, então não quero que essas solicitações apareçam no meu log de acesso.

A regra básica "reescrever" para todas as páginas do WordPress é:

location / {
    try_files $uri $uri/ /index.php?q=$args;
}

Agora, no mesmo nível, tentei

location /health_status {
    access_log off;
    #try_files $uri $uri/ /index.php?q=$args;
    }

Da nginx documentação de localização :

Literal strings match the beginning portion of the query - the most specific match will be used

/health_status é mais específico que / , por isso, esse bloco age quando eu solicito http://domain.tld/health_status .

Com a linha try_files comentada (como acima), a solicitação não aparece no log de acesso, hurray, mas obviamente eu recebo um erro 404, porque o nginx não redireciona essa solicitação para o WordPress.

Com a linha try_files sendo ativada, um redirecionamento interno para o WordPress ' index.php ocorre e a página /health_status WordPress é mostrada no navegador. No entanto, após o redirecionamento interno, o bloco location /health_status não está mais em ação e a solicitação é encerrada no log de acesso.

Como resolver este problema de forma limpa? Agora preciso adicionar outro bloco correspondente à solicitação /index.php?q=healthstatuswhatever real que ocorre após o redirecionamento interno?

Obrigado!

    
por Jan-Philip Gehrcke 20.09.2012 / 18:53

1 resposta

1

Você deve usar um local nomeado para solicitações destinadas ao WordPress. Um exemplo disso:

location ~ \.php$ {
    try_files $uri =404;

    fastcgi_ ### fastcgi params and other config for PHP go here
}

location @wordpress {
    try_files $uri /index.php;

    fastcgi_ ### fastcgi params and other config for WP go here
}

location / {
    try_files $uri $uri/ @wordpress;
}

location /health_status {
    access_log off;
    try_files $uri $uri/ @wordpress;
}

Este exemplo está incompleto e pode ser inseguro; Ele apenas demonstra como seu problema pode ser resolvido. Certifique-se de proteger seu servidor da Web corretamente.

    
por 20.09.2012 / 19:03