nginx 位置拒绝正则表达式不允许的文件扩展名
nginx location deny file extension not allowed by regex
在 nginx 我试图只允许一些扩展并拒绝 所有其他的 比如 gif,zip,exe,php 对于给定的子树。
我想使用正则表达式来定义 允许 扩展。
这是我使用负面展望的尝试:
location /wp-content/userimages/ {
location ~* (\.(?!(jpg|png|jpeg)))$ {
deny all;;
}
}
(\.(?!(jpg|png|jpeg)))$
正则表达式匹配输入末尾的 .
,因为 \.
和 $
之间没有消耗模式。您需要为扩展添加一个消费模式,例如[^.]+
匹配除 .
:
之外的任何 1+ 个字符
\.(?!(png|jpe?g)$)[^.]+$
请注意,我将 jpeg|jpg
缩小为 jpe?g
并将字符串结尾检查添加到前瞻中,以便以禁止扩展名开头的扩展名(如 png2
(如果你曾经来过穿过它)) 可以匹配而 png
不能。
在 nginx 我试图只允许一些扩展并拒绝 所有其他的 比如 gif,zip,exe,php 对于给定的子树。
我想使用正则表达式来定义 允许 扩展。
这是我使用负面展望的尝试:
location /wp-content/userimages/ {
location ~* (\.(?!(jpg|png|jpeg)))$ {
deny all;;
}
}
(\.(?!(jpg|png|jpeg)))$
正则表达式匹配输入末尾的 .
,因为 \.
和 $
之间没有消耗模式。您需要为扩展添加一个消费模式,例如[^.]+
匹配除 .
:
\.(?!(png|jpe?g)$)[^.]+$
请注意,我将 jpeg|jpg
缩小为 jpe?g
并将字符串结尾检查添加到前瞻中,以便以禁止扩展名开头的扩展名(如 png2
(如果你曾经来过穿过它)) 可以匹配而 png
不能。