我对 nginx 还很陌生,我有一个 nginx conf 脚本,其中包含以下模板,示例1和示例2有相同的内容,我想把这些内容放在一个函数中(与编程中的方法相同的概念),并在里面传递参数以减少重复,可以这样做吗?我搜索了很长时间,但没有看到做类似事情的例子。
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
}
}
答案1
正如评论中提到的,nginx 中没有任何功能。对于这些,您需要一个配置管理系统。
但是,要组合这两个块,您可以使用正则表达式捕获:
location ~ ^/(example1|example2/)$ {
proxy_pass http://some.ip/$1;
... rest of configuration directives ...
}
可以扩展正则表达式来匹配这些路径下的文件,例如:
location ~ ^/(example1|example2/)(.+)$ {
proxy_pass http://some.ip/$1$2;
... rest of configuration directives ...
}
匹配 URL 中这些路径后面的所有文件并将它们添加到proxy_pass
。