【发布时间】:2018-09-01 15:05:08
【问题描述】:
我有一个后端和前端托管在同一台机器上(digitalocean)。后端公开 Angular 前端使用的 REST API。
出于安全原因,我想限制对 API 的访问,只允许来自 Angular 应用程序的调用。这可能吗?
我会想象这样的事情:
location /api {
allow 127.0.0.1;
deny all; }
工作,但它没有。
【问题讨论】:
我有一个后端和前端托管在同一台机器上(digitalocean)。后端公开 Angular 前端使用的 REST API。
出于安全原因,我想限制对 API 的访问,只允许来自 Angular 应用程序的调用。这可能吗?
我会想象这样的事情:
location /api {
allow 127.0.0.1;
deny all; }
工作,但它没有。
【问题讨论】:
您只需将您的应用程序和 NGINX 更改为只收听127.0.0.1,这使您的配置变得更加简单。只需更改您的服务器块以更改 listen 指令。
server {
listen 127.0.0.1:80; # or any other port you are using to listen.
# Remove listen 80; listen 443; listen [::]:443; or listen [::]:80;
# All your other stuff...
}
仅此而已,您不需要所有这些允许和拒绝。
【讨论】:
localhost 而不是127.0.0.1。如果是这种情况,您有两个选择:要么在 NGINX 上收听 localhost:80,要么在应用程序中更改请求以使用 127.0.0.1 而不是 localhost。如果我是你,我会在应用程序中进行更改,因为安全性:你避免有人劫持localhost DNS