如何使用 nginx 反向代理服务器限制对 RESTful API 的访问?

How can I restrict access to an RESTful API with a nginx reverse proxy server?

我有一个可以提供给客户端的网页,之后当他们按下该页面时,它会将请求发送到 nginx 反向代理,后者会将其发送到正确的 RESTful API。 nginx 和 RESTful API 在另一台服务器上。

如何使用ngnix限制到网页,让用户无法直接进入API.

我已经设置了 CORS,但有人告诉我可以绕过 CORS(例如 Postman)。

我试过使用(全部在 nginx 配置上):

if ($host != domain.of.webpage) {
    return 444;
}

另一种方法:

server {
    listen 443 default_server;
    listen [::]:443 default_server;
    server_name _;
    return 444;
}

还有一个:

satisfy any;

allow xx.xx.xx.xx/xx;
allow xxxx:xxxx:xxxx:xxxx:xxxx/xx;
deny all;

所有受限访问以及对网页本身的访问。我知道最后一种方法行不通,因为访问它的客户端不会在主机上,所以 IP 地址没有实际意义。

还有什么我可以尝试的吗?

parzival 在问题的评论中给出了答案。我在下面转载了它。

It sounds like you are saying you have an API exposed on the public Internet, used by a web page on the public Internet, and you want to restrict access such that the API can only be used by scripts on that web page. Is that accurate? If so, there is nothing you can truly do to restrict access in this way. At most, you could rely on obfuscation techniques to make it more difficult.

— parzival Mar 29 '19 at 22:17