【发布时间】:2019-08-19 23:01:08
【问题描述】:
我有一个将提供给客户端的网页,之后当他们按下该页面时,它会将请求发送到 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 地址没有实际意义。
还有什么我可以尝试的吗?
【问题讨论】:
-
听起来你在说你有一个暴露在公共互联网上的 API,被公共互联网上的一个网页使用,你想限制访问,使得 API 只能被脚本使用在那个网页上。那准确吗?如果是这样,那么您实际上无法以这种方式限制访问。最多,您可以依靠混淆技术使其变得更加困难。
-
@parzival 由于网页必须公开,因此无法将 API 设为私有。谢谢。
标签: reverse-proxy nginx-config restrict