【发布时间】:2021-11-26 15:41:23
【问题描述】:
希望你们一切都好。
我是 NGINX 的初学者,我正在尝试理解以下 NGINX 配置文件块。如果有人能帮助我理解这个块,我将不胜感激。
location ~ ^/search/google(/.*)?$ {
set $proxy_uri $1$is_args$args;
proxy_pass http://google.com$proxy_uri;
}
从以下 SO 文章 (https://stackoverflow.com/a/59846239) 中,我了解到:
-
对于
location ~ ^/search/google(/.*)?$-
~表示它将执行正则表达式搜索(区分大小写) -
^/search/google表示路由应该以/search/google开头(例如http://<ip or domain>/search/google。如果我们在末尾有尾随/有什么区别(例如http://<ip or domain>/search/google/而不是http://<ip or domain>/search/google -
(/.*)?$这是我有点困惑的部分。- 为什么在这种情况下使用
()组?使用组的常见用例是什么? - 为什么在这种情况下使用
??.*不是已经包含零个或多个字符,为什么我们还需要? - 我们可以简单地删除
()和?(例如/search/google/.*$)以获得与原始行为相同的行为吗?
- 为什么在这种情况下使用
-
-
set $proxy_uri $1$is_args$args;- 我知道我们正在设置一个名为
proxy_uri的用户定义变量 -
$1会被替换成什么,有时有人还包括$2等等? - 我认为
$is_args$args的意思是如果有查询字符串(即http://<ip or domain>/search/google?fruit=apple,$is_args$args会被替换为?fruit=apple
- 我知道我们正在设置一个名为
-
proxy_pass http://google.com$proxy_uri- 我会假设它只是将用户重定向到
http://google.com$proxy_uri???和http重定向301一样???
- 我会假设它只是将用户重定向到
非常感谢您!
【问题讨论】: