Nginx的代理服务器:除子path之外,全部拒绝

我正在尝试为当前正在开发的节点应用程序设置Nginx代理。

我试图只允许列入白名单的IP访问主站点,但我有一个/ apipath,我希望可以通过任何IP访问。

我已经试过以不同的顺序定义位置块,嵌套等,但没有骰子,目前似乎不传递任何请求到/代理到代理

upstream node_upstream { server 127.0.0.1:3000 fail_timeout=0; } server { listen 80; listen [::]:80; server_name example.com; location /api { allow all; } location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; proxy_buffering off; proxy_pass http://node_upstream; allow 1.2.3.4; deny all; } location /public { root /path/to/static/files; } listen 443 ssl; ... SSL Config here... if ($scheme != "https") { return 301 https://$host$request_uri; } } 

根据Richard的评论的build议修复。

Nginx只匹配一个位置块,所以我移动了在服务器中定义的头文件,并设置了proxy_pass的适当的allow,拒绝代理的path。

 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; } ... }