【发布时间】:2014-01-30 02:58:08
【问题描述】:
您好,我正在为sailjs 应用程序创建一些rest api。现在我需要使用带有 http-bearer-token 策略的 OAuth2.0 身份验证来访问我的应用程序。所以我希望我的服务器接受 https 连接。任何提示我该怎么做?
【问题讨论】:
标签: node.js ssl express https sails.js
您好,我正在为sailjs 应用程序创建一些rest api。现在我需要使用带有 http-bearer-token 策略的 OAuth2.0 身份验证来访问我的应用程序。所以我希望我的服务器接受 https 连接。任何提示我该怎么做?
【问题讨论】:
标签: node.js ssl express https sails.js
事实证明这很简单,实际上。使用以下内容更新您的 config/local.js:
/**
* Depencencies
*/
var fs = require('fs');
module.exports = {
// ...
// Here go the port, environment definitions, etc.
// ...
ssl: {
key: fs.readFileSync('path_to_your_key.pem'),
cert: fs.readFileSync('path_to_your_cert.pem')
}
};
要在开发环境中使用它,您只需create a self-signed certificate,将这些文件放在config/ssl 和config/local.js 中使用
ssl: {
key: fs.readFileSync(__dirname + 'ssl/key.pem'),
cert: fs.readFileSync(__dirname + 'ssl/cert.pem')
}
【讨论】:
在生产环境中,我们不应该让 nodejs 应用面对原始流量。改用Nginx,Nginx可以处理https连接转发到sailjs http连接,额外处理限速,缓存...
server {
listen 443 ssl;
server_name localhost;
ssl on;
ssl_certificate /etc/nginx/your_site/your_site-bundle.crt;
ssl_certificate_key /etc/nginx/your_site/your_site.key;
location /your_api {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:2000;
proxy_redirect off;
}
}
它还同时处理 http 和 https 连接。在下面的示例中,我只是将 http 连接转发到 https。如果你有别的目的,只要改变里面的逻辑。
server {
listen 80;
server_name localhost;
return 301 https://$host$request_uri;
}
【讨论】: