【问题标题】:SailsJS as API and Nginx: Restrict external accessSailsJS 作为 API 和 Nginx:限制外部访问
【发布时间】:2016-05-24 23:08:48
【问题描述】:

我在 digitalocean 液滴上运行 SailsJS(使用 nginx 的 MEAN Stack)。我的所有请求都映射到我的 Angular 前端,除了 /api 上的请求映射到 port 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;
    }
}

– 提前致谢!

【问题讨论】:

    标签: angularjs api nginx sails.js restrict


    【解决方案1】:

    我认为您不能这样做,因为 Angular 在您的客户端中运行,因此您需要从所有用户那里获取 IP。您可以使用与信任代理一起使用的简单方法

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

    或者使用一些更复杂和可信的,比如link

    【讨论】:

    • 感谢您的回复@Makah!令人惊讶的是,我通过将host: '127.0.0.1' 属性添加到我的local.jssails 配置中来实现这一点(我之前尝试过,但没有成功)。现在nginx将所有外部请求重定向到我的前端索引和前端的api请求到127.0.0.1:1337。我会做一些进一步的测试......
    猜你喜欢
    • 2021-10-30
    • 2021-08-19
    • 1970-01-01
    • 2017-01-27
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多