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

时间:2016-09-11 12:29:08

标签: node.js nginx soundcloud restify

我正在开展一个有两个部分的项目:

  • 网站(AngularJS)
  • 在端口3000上侦听的API(带有Restify的node.js)

在我的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));

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

{ code: 403, message: 'Forbidden' }

1 个答案:

答案 0 :(得分:0)

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

来自SoundCloud的工作人员:

  

不幸的是,我们的信托基金&安全工程师需要阻止SoundCloud的OVH,因为它导致了大量的垃圾邮件和虚假活动。 : - /

此处有更多信息: https://www.soundcloudcommunity.com/soundcloud/topics/403-forbidden-when-using-ovh-vpn