nginx 错误匹配正则表达式

nginx 错误匹配正则表达式

我在 nginx.conf 中有以下块:

server {
    listen 9001;
    # Only forward matching URLs for the public facing port
    location ~ ^/challenge/1.0/auth/complete/[A-Z0-9]+$ {
        proxy_pass http://localhost:5001;
        proxy_connect_timeout 300s;
        proxy_read_timeout 300s;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

但是 nginx 错误地匹配并允许了这些 URL:

http://localhost:9001/challenge/1.0/auth/complete/x
http://localhost:9001/challenge/1.0/auth/complete/A.
http://localhost:9001/challenge/1.0/auth/complete/,

知道原因吗?谢谢。

答案1

location当块中的第一个server设置为以下内容时,Nginx(从版本 1.11.9 开始)与您提供的 URL 不匹配:

location ~ ^/challenge/1.0/auth/complete/[A-Z0-9]+$
{
    return 403;
    break;
}

请调整您的配置以匹配上面的示例(即,将其放置在server块开始之后并添加break指令)。

相关内容