当前端有 nginx 反向代理时如何阻止对后端的直接访问

当前端有 nginx 反向代理时如何阻止对后端的直接访问

我有一个带有 nginx 反向代理的前端。任何以前缀“api”开头的 get 请求都会被路由到后端。但是我注意到这也会导致允许直接调用后端。

例如,如果我单击前端(位于“frotend-url”)中的一个按钮,向后端 URI“/api/hello”发出获取请求,代理会将其转换为“backend-url/api/hello”。但是,如果我直接从 Chrome、curl 等向“frontend-url/api/hello”发出获取请求,这也可以正常工作。有什么方法可以不允许这种情况发生吗?

答案1

我能给出的解决方案是直接使用iptables来限制后端服务器的访问,下面是一个例子:

# Allow port to spessific IP
iptables -A INPUT -p tcp -s your-Frontend-IP_Address --dport 80 -j ACCEPT #if your API run on port 80

# Then Block access from all
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 80 -j DROP

它使端口 80 仅可供前端 IP 访问。

相关内容