Consertado com conselhos do comentário de Richard.
O Nginx corresponde apenas a um bloco de localização, por isso movi os cabeçalhos a serem definidos no servidor e defino proxy_pass com a permissão apropriada, negando os caminhos a serem intermediados por proxy.
server {
listen 80;
listen [::]:80;
server_name example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
proxy_buffering off;
location /api {
proxy_pass http://node_upstream;
allow all;
}
location / {
proxy_pass http://node_upstream;
allow 1.2.3.4;
deny all;
}
...
}