2014-01-30 94 views
1

嗨,我正在爲sailjs應用程序創建一些休息API。現在我需要使用http-bearer-token策略使用OAuth2.0身份驗證訪問我的應用程序。所以我希望我的服務器接受https連接。任何提示我怎麼能做到這一點?在sailjs上實現https服務器

回答

3

事實證明,它非常簡單。用下面的更新您的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/sslconfig/local.js使用

ssl: { 
    key: fs.readFileSync(__dirname + 'ssl/key.pem'), 
    cert: fs.readFileSync(__dirname + 'ssl/cert.pem') 
    } 
+0

嗨Bredikin它的工作,現在我面臨着其他問題。 1)我想在sails.js中同時運行http和https。 2)我正在使用自簽名證書。我向我的計算機展示了它,並且它正在postman和chrome中工作,但是我寫了一個mocha測試套件,它停止了使用SSL的任何想法,我怎麼能強迫mocha忽略SSL安全參數。 –

+0

@VampireCoder我真的很推薦你爲這些創建兩個問題,因爲這些是有趣的主題,答案很難在評論中格式化。 – bredikhin

0

在生產環境中,我們應該不要讓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; 
}