I hope all of you are well.
I am a beginner with NGINX and I am trying to understand the following NGINX config file block. I would be really grateful if someone could help me understand this block.
location ~ ^/search/google(/.*)?$ {
  set $proxy_uri $1$is_args$args;
  proxy_pass http://google.com$proxy_uri;
}
From the following SO article (https://stackoverflow.com/a/59846239), I understand that:
- For the - location ~ ^/search/google(/.*)?$- ~means that it will perform regex search (case sensitive)
- ^/search/googlemeans that the route should start with- /search/google(e.g.- http://<ip or domain>/search/google. Is there any difference if we have trailing- /at the end (e.g.- http://<ip or domain>/search/google/instead of- http://<ip or domain>/search/google
- (/.*)?$this is the part that I'm a bit confused.- why use ()group in this case? What's the common use case of using group?
- why use ?in this case? Isn't.*already includes any char zero or more, why do we still need?
- Can we simply remove ()and?such as/search/google/.*$to get the same behavior as the original one?
 
- why use 
 
- set $proxy_uri $1$is_args$args;- I understand that we are setting a user-defined var called proxy_uri
- what will $1be replaced with, sometimes someone also include$2and so on?
- I think $is_args$argsmeans that if there's a query string (i.e.http://<ip or domain>/search/google?fruit=apple,$is_args$argswill be replaced with?fruit=apple
 
- I understand that we are setting a user-defined var called 
- proxy_pass http://google.com$proxy_uri- I would assume it just redirects the user to http://google.com$proxy_uri??? same as http redirect 301???
 
- I would assume it just redirects the user to 
Thank you very much in advance!
 
    