Log requests for a specific location

Have the same problem. Tried with named location, but i always get the same thing, access log created for specific location (/calendar) is empty, and logs are stored in general access log (/) in a location context.

If I remove .+\.php$ part from a last location context I'm getting a raw view of the index.php file., because of ^~ modifier. Any advice how to log requests to a specific location?

#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;
        }
    }   
}
2
задан 19 May 2016 в 22:41
1 ответ

Есть несколько проблем с вашим файлом конфигурации.

Модификатор ^ ~ предназначен для местоположений префиксов, а не для местоположений регулярных выражений (несмотря на наличие тильды). Подробнее см. этот документ .

Чтобы дать приоритет местоположению регулярного выражения над другим местоположением регулярного выражения, оно просто должно появиться первым.

Блок местоположения должен быть полным. nginx не будет брать биты из одного места и объединять их с битами из другого.

Например, это может сработать для вас:

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;
}
2
ответ дан 3 December 2019 в 11:32

Теги

Похожие вопросы