使用 node.js 代理和外部 api 调用的 nginx
nginx with node.js proxy and external api call
我正在做一个项目,其中有两个部分:
- 网站 (AngularJS)
- API(node.js 与 Restify)侦听端口 3000
在我的 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
我正在做一个项目,其中有两个部分:
- 网站 (AngularJS)
- API(node.js 与 Restify)侦听端口 3000
在我的 debian 服务器上,我已经为 API:
配置了 nginxserver {
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