在Nginx配置文件中分割长行


15

为了不将垃圾传递给后端,我对location指令使用了严格的正则表达式。看起来像这样:

location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/...(more|restrict).ext {
    # other directives
}

我想将行折叠为80个字符,是否可以拆分配置?以下结果导致语法错误,但这是我要寻找的东西:

location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/"\
            "...(more|restrict).ext" {
# results in a literal newline (%0A) being accepted
location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/
...(more|restrict).ext" {

我在文档中找不到提示(http://wiki.nginx.org/ConfigNotationhttp://wiki.nginx.org/HttpCoreModule#location都未提及折线)


您可以从多个插补片段中构建字符串吗?(我不知道)
bsb 2015年

@bsb不能在位置表达式中使用变量,因此不能,不能设置变量和使用字符串插值。
Lekensteyn

Answers:


7

我认为您无法做到这一点。

nginx平等地对待所有空格,因此即使您尝试像这样拆分字符串,并且nginx可以按您希望的方式对其进行解析,您最终还是会得到带有一堆空格的正则表达式,我敢肯定是这样的。 t您想要的。如果nginx无法解析它(很有可能),则只会出现语法错误。

您只需要忍受一些长行,或者制作不太复杂的正则表达式即可。


好吧,如果没有领导空间,我可以忍受。但是换行符似乎也按字面解释。
Lekensteyn 2014年

这确实不是世界末日。:)
迈克尔·汉普顿

1
现在,我陷入了一种location ".../[a-zA-Z0-9_...-]+$"模式,之后又是另一种模式location ~ "\.pkg\.tar\.xz$"。感谢您的回答,希望有一天会有更好的回答;)
Lekensteyn 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.