5

Say I have a value taken from cookie with

$cookie_MY_COOKIE

which contains 64 characters.

How can I remove first 60 characters in nginx configuration?

1 Answer 1

10

The map directive allows you to define a new variable based on the value of another. You can use a regular expression to capture the last four characters.

The map block needs to be defined within the http block (outside of the server block) so the name for the new variable must be globally unique.

See this document for details.

For example:

map $cookie_MY_COOKIE $my_value {
    default                    "";
    "~^.{60}(?<suffix>.{4})$"  $suffix;
}

server {
    ...
}

The regular expression will only match values which are exactly 64 characters long, otherwise an empty string is returned.

We use a named capture as numeric captures will be overwritten each time Nginx evaluates a regular expression elsewhere in your configuration.

Use the variable $my_value to obtain the last four characters from $cookie_MY_COOKIE.

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .