SailsJS作为API和Nginx:限制外部访问

时间:2016-05-24 23:08:49

标签: angularjs api nginx sails.js restrict

我在数字海洋小滴上运行SailsJS(带有nginx的MEAN Stack)。我的所有请求都映射到我的Angular前端,但 / api 上的请求映射到端口1337 上的 proxy_pass (Sails运行时) 。这个程序工作正常。

现在我想限制对我的API的访问权限,只允许来自我的前端的请求。我已经尝试在我的nginx配置中拒绝/允许,但这会阻止用户请求本身。我尝试了几个答案,比如this,但他们没有成功。

将我的Sails API访问限制为localhost的推荐方法是什么?我想在我的Droplet上运行多个应用程序,并使用Sails作为我的API,只有我的Droplet中的应用程序才能访问它。

我的nginx配置:

upstream sails_server {
    server 127.0.0.1:1337;
    keepalive 64;
}

server {
    server_name domain.com;
    index index.html;

    location / {
        root /opt/domain/build;
        try_files $uri $uri/ /index.html;
    }

    location /api {
        proxy_http_version               1.1;
        proxy_set_header Connection      "";
        proxy_set_header Host            $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP       $remote_addr;
        client_max_body_size             500M;
    }
}

- 提前致谢!

1 个答案:

答案 0 :(得分:0)

我认为你不能这样做因为你的客户端有角度运行,所以你需要从所有用户那里获得IP。您可以使用与trustes proxys一起使用的简单方法

var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress

或使用更复杂和受信任的link