所以我终于把学习正则表达式变成了一件事情。通常在使用正则表达式时,需要用“\”转义分隔符(如“/”)。但是当我在 Nginx 中使用正则表达式时,似乎“/”被视为字面意思而不是分隔符。
Nginx 使用 PCRE 引擎来评估正则表达式,所以对我来说,你可以只抛出一个未转义的分隔符而没有任何后果,这对我来说毫无意义。
例如,下面的正则表达式允许单个 IP 地址并拒绝所有其他地址:
location ~ /\.serverfault {
allow 1.2.3.4;
deny all;
}
Run Code Online (Sandbox Code Playgroud)
但我认为它需要像这样才能正常工作:
location ~ \/\.serverfault {
allow 1.2.3.4;
deny all;
}
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?
当我运行此命令时,它按预期工作:
wget -p https://www.google.com/
Run Code Online (Sandbox Code Playgroud)
运行此命令后,我检查错误代码
echo $?
Run Code Online (Sandbox Code Playgroud)
这将返回 0,表示上次运行的命令没有遇到任何错误。
现在我运行:
wget -p https://www.google.com/ >/dev/null
Run Code Online (Sandbox Code Playgroud)
最后一个命令应该抑制标准输出 - 但它没有。那么发生了什么?这几乎似乎是 wget 特有的,因为我以前从未在使用其他命令时遇到过管道标准输出的问题。
还值得注意的是,如果您运行:
wget -p https://www.google.com/ 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
所有输出都被抑制。有人会关心启发一个困惑的人吗?