使用 node.js 代理和外部 api 调用的 nginx

nginx with node.js proxy and external api call

我正在做一个项目,其中有两个部分:

在我的 debian 服务器上,我已经为 API:

配置了 nginx
server {
   listen 80;
   return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name mydomain.com;

    ssl on;
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;
    ssl_session_timeout 5m;
    ssl_protocols SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;

    location / {
      proxy_pass https://127.0.0.1:3000;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection 'upgrade';
      proxy_set_header Host $host;
      proxy_cache_bypass $http_upgrade;
    }
}

问题是 API 调用了 SoundCloud API (api.soundcloud.com)。

我认为 Nginx 服务器不允许调用,我们得到了响应 "Forbidden"。 API 的代码没问题,因为在我的笔记本电脑上它可以正常工作。

你知道我该如何解决吗?

编辑: javascript (ES6) 代码(我使用节点 v6.5.0):

const SC = require('soundcloud-node-es6');

SC.init({
    id:     'ID',
    secret: 'SECRET',
});

SC.get('/tracks', {
    q: 'panda',
})
.then((tracks) => console.log(tracks))
.catch((error) => console.log(error));

此代码仅适用 "in local"。当我 运行 它在我的服务器上时(有和没有 nginx),它不起作用并发回给我:

{ code: 403, message: 'Forbidden' }

我发现了问题。 SoundCloud 禁止所有 OVH 专用服务器。

来自 SoundCloud 工作人员:

Unfortunately, our Trust & Safety engineers needed to block OVH for SoundCloud, as it was causing a lot of spam and fake activity to come through. :-/

更多信息在这里: https://www.soundcloudcommunity.com/soundcloud/topics/403-forbidden-when-using-ovh-vpn