There is currently a block of one location /
location / {
root /var/www/docs;
proxy_pass http://backend;
proxy_buffering on;
proxy_buffer_size 64k;
proxy_buffers 256 64k;
}
that needs to be filtered by IP.
Ideally, in order to reduce the number of repetitions of the same directives in location
, I would like to perform the test within the location
block
location / {
if ($uri ~ '^/(abc|def|ghi)') {
allow 10.0.0.0/8;
allow 1.2.3.4;
deny all;
}
root /var/www/docs;
proxy_pass http://backend;
proxy_buffering on;
proxy_buffer_size 64k;
proxy_buffers 256 64k;
}
Unfortunately, it seems the allow
/deny
directives cannot be used within a if
block.
"allow" directive is not allowed here in /etc/nginx/sites-enabled/mysite:20
Is there an elegant way to perform the test without repeating the location
blocks?
(like
location ~ /(abc|def|ghi) {
allow 10.0.0.0/8;
allow 1.2.3.4;
deny all;
... 5 other lines root,proxy...
}
location / {
... 5 other lines root,proxy...
}
)