Nginx Переменная $ upstream_addr не работает, если условие - PullRequest
1 голос
/ 13 февраля 2020

Я использую обратный прокси, используя директиву proxy_pass из ngx_http_proxy_module . Я хочу запретить доступ к определенным диапазонам внутренних IP-адресов (например, 172.0.0.0/24). Я пробовал

if ($upstream_addr ~* "^172.*") {                                     
    return 403;                                                    
}
add_header X-mine "$upstream_addr";

как в server, так и location контексте, но это не работает, то есть Nginx по-прежнему возвращает 200:

$ curl localhost -I
HTTP/1.1 200 OK
Server: nginx/1.17.0
Date: Thu, 13 Feb 2020 12:58:36 GMT
Content-Type: text/html
Content-Length: 612
Connection: keep-alive
Last-Modified: Tue, 24 Sep 2019 14:49:10 GMT
ETag: "5d8a2ce6-264"
Accept-Ranges: bytes
X-mine: 172.20.0.2:80

Что я отсутствует? (Обратите внимание, что я добавил содержимое переменной $upstream_addr в заголовок X-mine для отладки.)

...