我有一个网页,它将被提供给客户端,当客户端点击该网页时,它将把请求发送到nginx反向代理服务器,后者将把请求发送到正确的RESTful API。nginx和RESTful API在另一台服务器上。
我如何使用nginx来限制只对网页进行访问,使用户不能直接进入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在问题的评论中给出了答案。我把它复制到下面。
听起来你是说你有一个API暴露在公共互联网上,被公共互联网上的一个网页使用,你想限制访问,使API只能被该网页上的脚本使用。这是否准确?如果是,你无法真正做到这样限制访问。最多,你可以依靠混淆技术来增加难度。- parzival Mar 29 '19 at 22:17