nginx 中的函数

had*_*des 7 nginx

我对 nginx 很陌生,我有一个 nginx conf 脚本,它具有以下模板,example1example2具有相同的内容,我想将这些内容放入一个函数中(与编程中的方法相同的概念),并在其中传递参数以减少重复,可以这样做吗?我搜索了很长时间但没有看到做类似事情的例子。

server {
   server_name test.com

  location ^~ /example1/ {
      proxy_pass http://<some-ip>/example1/;
      proxy_set_header blah

  }

  location ^~ /example2/ {
      proxy_pass http://<some-ip>/example2/;
      proxy_set_header blah

  }

}
Run Code Online (Sandbox Code Playgroud)

Ter*_*nen 2

正如评论中提到的,nginx 中没有任何功能。对于这些,您需要一个配置管理系统。

但是,要组合这两个块,您可以使用正则表达式捕获:

location ~ ^/(example1|example2/)$ {
    proxy_pass http://some.ip/$1;
    ... rest of configuration directives ...
}
Run Code Online (Sandbox Code Playgroud)

可以扩展正则表达式以匹配这些路径下的文件,例如:

location ~ ^/(example1|example2/)(.+)$ {
    proxy_pass http://some.ip/$1$2;
    ... rest of configuration directives ...
}
Run Code Online (Sandbox Code Playgroud)

匹配 URL 中这些路径之后的所有文件并将它们添加到proxy_pass.