How to get substring of a string with nginx
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
.