我在 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
指令)。