Sails.js Http + Https
Solution 1:
I was able to get http and https running with sails by modifying my configs/local.js file:
var fs = require('fs');
var local = ... // Your default local.js settings should go hereif(require('optimist').argv.https) {
local.express = {
serverOptions : {
key: fs.readFileSync('ssl/server.key'),
cert: fs.readFileSync('ssl/server.crt')
}
};
local.port = 1338; // This port should be different than your default port
}
module.exports = local;
Now you will need to run your sails app twice. The first time type in your regular sails lift
command. The second time run sails lift --https
This should allow you to have both http and https servers running off of the same codebase. As some other people have mentioned, nginx is a much better solution for handling this sort of this, but if you are doing local development and don't want to have to install nginx the solution above is just fine.
Solution 2:
To have both HTTP & HTTPS, avoiding the redirection way:
Configure your SSL key & cert and HTTPS port in your /config/env/production.js:
varfs= require( 'fs' );
module.exports = {
port: 443,
ssl: {
key: fs.readFileSync( 'ssl_key.key' ),
cert: fs.readFileSync( 'ssl_key.crt' )
}
//, ...
};
Then, listen port 80 with a second HTTP server into /config/bootstrap.js:
var http = require( 'http' );
module.exports.bootstrap = function ( cb ) {
// ...if ( process.env.NODE_ENV == 'production' )
http.createServer( sails.hooks.http.app ).listen( 80 );
// ...
};
Solution 3:
I've been wondering for running sailsjs on HTTPS and after going back and forth here is the solution working for me.
- I copied .crt and .key file in project directory under ssl folder
config/local.js updated with following as I'm using sailsjs 0.12.3
ssl: { key: require('fs').readFileSync(require('path').resolve(__dirname + '/ssl/mykey.key')), cert: require('fs').readFileSync(require('path').resolve(__dirname + '/ssl/mycert.crt')) }
Solution 4:
Check this out: https://github.com/balderdashy/sails/issues/862
module.exports.bootstrap = function (cb) {
var express = require("express"),
app = express();
app.get('*', function(req,res) {
res.redirect('https://' + req.headers.host + req.url)
}).listen(80);
cb();
};
If you are using sails 0.10.x you may need to move this to module.exports.express (config/express.js) I'm not sure...
Solution 5:
As an update from 0.9 to 0.10 , the local.js file should now have
ssl : {
key: fs.readFileSync(‘server.key’),
cert: fs.readFileSync(‘server.crt’)
}
instead of
express : {
serverOptions : {
key: fs.readFileSync('ssl/server.key'),
cert: fs.readFileSync('ssl/server.crt')
}
};
Post a Comment for "Sails.js Http + Https"