Назад | Перейти на главную страницу

Как регистрировать запросы nginx, сделанные в определенном месте в другом файле?

У меня есть nginx, действующий как прокси перед серверной частью, и я хочу разделить запросы, сделанные в определенном месте, в отдельный файл.

Тем не менее, запросы должны поступать на тот же внутренний сервер, но я не хочу видеть их в главном журнале доступа.

Также я не хочу указывать все элементы proxy_ дважды.

server {
    ...
    access_log  /var/log/nginx/jira.access.log full;
    error_log  /var/log/nginx/jira.error.log;
    client_max_body_size 150m;        

    location /special/ {
        }

    location / {

            # many lines of config params for proxy_...
            proxy_pass   http://dowa-02.example.com:8080;
            ...
    }
}

UPD

Хммм ... access_log директива имеет "особенность".

Запросы регистрируются в контексте места, где заканчивается обработка. Это может отличаться от исходного местоположения, если во время обработки запроса происходит внутреннее перенаправление.

В случае try_files внутреннее перенаправление. Попробуйте изменить try_files к include & удалить указанное местоположение.

КОНЕЦ UPD


Чтобы не повторять много раз "proxy_ stuff", можно использовать include директива, например. Но try_files и названное место намного лучше :)

server {
    ...
    access_log  /var/log/nginx/jira.access.log full;
    error_log  /var/log/nginx/jira.error.log;
    client_max_body_size 150m;

    location /special/ {
        try_files $uri @backend;
        access_log /var/log/nginx/special.access.log full;
    }

    location / {
        try_files $uri @backend;
    }

    location @backend {
            # many lines of config params for proxy_...
            proxy_pass   http://dowa-02.example.com:8080;
            ...
    }
}