我需要配置我的反向代理,以便在 url 的末尾添加以下参数: &locale=de-de
这几乎有效:
rewrite ^(.*)$ $1&locale=de-de break;
但是,问题是我需要附加 '&locale=de-de'仅当它不存在并且有 '?'时才需要附加。在网址中...
我可以在制定正确的正则表达式方面获得一些帮助吗?
另一个问题:如果我使用这个,为什么我的 url 中的问号不显示:
$uri?$args
或者 $uri$is_args$args 翻译未编码的 url,问号显示为 %3f。
想法?
编辑:与proxy_pass 结合使用时,似乎存在此行为。在简单的重写中,它工作得非常好。
我的 haproxy.conf 中有以下几行:
acl valid_domains hdr(Host) -i mysite.com images.mysite.com docs.mysite.com admin.mysite.com
redirect location http://mysite.com/invalid_domain if !valid_domains
Run Code Online (Sandbox Code Playgroud)
我如何匹配任何子域?
我试过:
acl valid_domains hdr(Host) -i *.mysite.com
和:
acl valid_domains hdr(Host) -i [a-z]+.mysite.com
......但都没有奏效。
谢谢
我有一个这样设置的规则;
在 /etc/sec/rules.d 我有;
type=SingleWithSuppress
ptype=regexp
pattern=(\S+) sshd\[\d+\]: PAM \d+ more authentication failures\; logname=.* uid=.* euid=.* tty=ssh ruser=.* rhost=(.*) user=(.*)
desc=Login Failure: $0
action=pipe '%s ' /bin/mail -s "login failure $2 to $3@$1" team@team.com
window=300
Run Code Online (Sandbox Code Playgroud)
因此,如果这是通过系统日志实现的;
Nov 21 11:24:10 servername.server.com sshd[26846]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost= user=kloggins
Run Code Online (Sandbox Code Playgroud)
它应该根据模式匹配这个(它根据我的正则表达式编辑器匹配);
servername.server.com sshd[26846]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost= user=kloggins
Run Code Online (Sandbox Code Playgroud)
我们遇到了垃圾邮件问题,因为时间戳正在发生变化。所以我重写了模式以匹配主机名之后的所有内容。
但是,这似乎不起作用,每次用户“身份验证失败”时,我仍然会收到一封电子邮件。
我一直在使用以下内容进行测试;
logger -p syslog.err 'sshd[26846]: PAM 2 more authentication failures; …Run Code Online (Sandbox Code Playgroud) 我有一个 NGINX 作为反向代理。我需要从 URL 中删除子字符串 string_1,URL 的其余部分是可变的。
例子:
Origin: http://host:port/string_1/string_X/command?xxxxx
Destination: http://internal_host:port/string_X/command?xxxxx
Run Code Online (Sandbox Code Playgroud)
nginx.conf:
location /string_1/ {
proxy_pass http://internal_host:port/$request_uri$query_string;
Run Code Online (Sandbox Code Playgroud)
谢谢,
@pcamacho
有时我想从我的 Apache 日志文件中 grep CIDR 范围。这对于落在自然边界(/8、/16 和 /24)上的范围很容易,但对于其他范围(例如 /17 和 /25)就不是那么容易了。
例子:
# 192.168.0.0/16: (easy)
grep " 192\.168\." access_log
# 192.168.128.0/17: (more thought required)
grep -E " 192\.168\.(12[89]|1[3-9][0-9]|2[0-5][0-9])\." access_log
# 192.168.0.0/17: (more thought required)
grep -E " 192\.168\.([0-9]|[0-9][0-9]|1[01][0-9]|12[0-7])\." access_log
# 192.168.128.0/18: (straining my brain)
grep -E " 192\.168\.(1[2-8][0-9]|19[01])\." access_log
Run Code Online (Sandbox Code Playgroud)
这些正则表达式会忽略包含前导零的 IP 地址,例如192.168.001.001,这在 Apache 日志文件中不是问题,但可能在其他日志文件中。打印机似乎特别喜欢前导零。将可选的零添加到正则表达式很容易,但它只会使整个事情变得更加困难。必须有更简单的方法。
有没有一种简单的方法可以从匹配任何 CIDR 范围的文件中选择行?
花式正则表达式扩展将被视为不同的工具(例如awk或perl在必要时,但我希望它是单行的),如果它们使工作更容易。理想情况下,我想要的是
grep "[:CIDR 192.168.128.0/18:]" access_log
Run Code Online (Sandbox Code Playgroud)
将 CIDR 范围转换为适当的正则表达式的工具也可以。
$ cidr2regex 192.168.0.0/18
192\.168\.(1[2-8][0-9]|19[01])\.[0-9]{1,3}
Run Code Online (Sandbox Code Playgroud)
或者
$ grep -E "$(cidr2regex …Run Code Online (Sandbox Code Playgroud) 给定任何 GitHub 存储库 url 字符串,例如:
git://github.com/some-user/my-repo.git
Run Code Online (Sandbox Code Playgroud)
或者
git@github.com:some-user/my-repo.git
Run Code Online (Sandbox Code Playgroud)
或者
https://github.com/some-user/my-repo.git
Run Code Online (Sandbox Code Playgroud)
从以下任何字符串中bash提取存储库名称的最佳方法是什么my-repo?该解决方案必须适用于上面指定的所有类型的 url。
谢谢。
所以我终于把学习正则表达式变成了一件事情。通常在使用正则表达式时,需要用“\”转义分隔符(如“/”)。但是当我在 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)
我在这里缺少什么?
我有一组我想一直重命名的文件,这些文件被命名为
"System-Log-01-01-2009-NODATA.txt"
"Something-Log-01-01-2009-NODATA.txt"
Run Code Online (Sandbox Code Playgroud)
我希望它们是小写的,yyyymmdd,.log 扩展名
"system.20090101.log"
"something.20090101.log"
Run Code Online (Sandbox Code Playgroud) 我有一个简单的问题,但我无法找到或解决答案。我想制作一个 tar 存档,但我想使用正则表达式从中排除一些文件。
要排除的文件示例如下: 68x640X480.jpg
我试过这个没有运气:
tar cvf test.tar --exclude=[0-9]+x[0-9X]+\.jpg /data/foto
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
在 ModSecurity 中有PCRE limits exceeded错误。
我知道我可以通过设置规则来解决这个问题,例如:
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000
Run Code Online (Sandbox Code Playgroud)
但是,这些规则实际上在做什么?PCRE 限制递归设置为 150,000 是什么意思?通过将这些设置得如此高,我允许通过哪些安全漏洞?什么是recursion和limit是什么意思?
我知道有文档,但文档实际上并没有告诉我发生了什么,它只是告诉我如何使用指令。