1

I have a Nginx service that serves an application. This application sends requests often, because of that, there are a lot of log messages inside my access.log file.

For that reason, I'm trying to create a Conditional Logging to avoid to save these unnecessary log messages.

Based on the documentation, I've tried to create a regex to check if the request contains a substring, but it did not work.

I believe my $request variable should be a request like this one:

GET /catalog-dash/_reload-hash HTTP/1.1

I would like to check if my $request variable contains the _reload-hash substring.

I've created the code below, but it did not work, unfortunately.

map $request $loggable {
    ~/_reload-hash/  0;
    default 1;
}

access_log /path/to/access.log combined if=$loggable;

If someone could help me, I would appreciate it.

Thank you in advance.

2
  • 2
    You're trying to match a string that ends with a /. The example you give in your question does not. Also, If you are not interested in the GET and HTTP/1.1 bits, you could use $request_uri instead. Commented Apr 7, 2020 at 14:43
  • Thank you for your observation. I've changed my configuration. Commented Apr 7, 2020 at 15:07

1 Answer 1

1

I believe before asking the question I did not use the correct keys to search the answer on the internet.

Some minutes after asking the original question I've found this answer that has solved my problem.

I send below the changes I did to work and I hope it could help others in the future.

map $request_uri $loggable {
    ~^.*_reload-hash.*$  0;
    default 1;
}

Thank you Richard for your tip of using $request_uri instead of $request.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.