Solicitações de log para um local específico

1

Tenha o mesmo problema. Tentei com localização nomeada, mas eu sempre obter a mesma coisa, log de acesso criado para local específico (/ calendário) está vazio e os logs são armazenados no log de acesso geral (/) em um contexto de local.

Se eu remover a parte .+\.php$ de um último contexto de localização, terei uma exibição bruta do arquivo index.php, devido ao modificador ^~ . Algum conselho sobre como registrar solicitações em um local específico?

#user  root;
worker_processes  1;

pid        /usr/local/nginx/logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    #default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {

    listen 80;
    server_name ip-address;

    root /var/www;
    index index.php;

    access_log /usr/local/nginx/logs/access.log;

        location / {
            try_files $uri /index.php;
        }

        location ~ \.php$ {
            include fastcgi.conf;
            fastcgi_pass 127.0.0.1:8080;
            try_files $uri =404;

        }

        location ^~ /calendar/.+\.php$ {
            access_log /usr/local/nginx/logs/calendar.log;
        }
    }   
}
    
por netman 18.05.2016 / 23:54

1 resposta

2

Existem vários problemas com o seu arquivo de configuração.

O modificador ^~ é para locais de prefixo e não para locais de regex (apesar da presença de um til). Consulte este documento para obter detalhes.

Para fornecer uma precedência de localização regex sobre outro local regex, ele simplesmente precisa aparecer primeiro.

O bloco de localização precisa estar completo. nginx não pegará bits de um local e mesclará com bits de outro.

Por exemplo, isso pode funcionar para você:

location ~ ^/calendar/.+\.php$ {
    access_log /usr/local/nginx/logs/calendar.log;
    try_files $uri =404;
    include fastcgi.conf;
    fastcgi_pass 127.0.0.1:8080;
} 
location ~ \.php$ {
    try_files $uri =404;
    include fastcgi.conf;
    fastcgi_pass 127.0.0.1:8080;
}
    
por 19.05.2016 / 10:08