难以为node.js socket.io应用程序设置Letsencrypt SSL。我究竟做错了什么?

时间:2016-03-21 18:19:03

标签: node.js ssl https socket.io lets-encrypt

我有一个在Ubuntu 14.04服务器上运行的node.js应用程序,我也依赖于apache,因为我的应用程序在后端使用MySQL。我在端口8080上运行apache,在端口80上监听节点应用程序。(只是一些初步信息)所以我从letsencrpyt获得了ssl证书,但它似乎没有使用socket.io。

这是我的代码

app.js

var favicon = require('serve-favicon');
var crypto = require("crypto");
var mysql      = require('mysql');
var http = require('http');
var fs = require('fs');
var _favicon = favicon(__dirname + '/favicon.ico');
 var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    port: '3306',
    password: 'password',
   database : 'database'
 });
 connection.connect(function(err){
 if(!err) {
     console.log("mysql connected");  
 } else {
  console.log(err);
 }
 });
var https = require('https');

var options = {
key: fs.readFileSync('../privkey.pem'),
cert: fs.readFileSync('../cert.pem')
};
     var server = https.createServer(options,
      function(req, response){
        fs.readFile(__dirname + '/index.html',
          function(err, data){
       if(err){
              response.writeHead(500);
              return response.end('error');
         } else {
      _favicon(req, response, function onNext(err){
        if(err){
        response.writeHead(200);
        response.end(data);
            } else {
            response.writeHead(200);
            response.end(data);
            }
        });
         }
     })
});
var io = require('socket.io').listen(server);
server.listen(80, "0.0.0.0");

然后在客户端我这样做

    <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
    var socket  = io.connect('https://localhost', {secure: true, port: 80});

这可能都是错的,我怎么做才能让人们输入我的域名&#34; oncampus.ws&#34;他们被重定向到https位置&#34; https://www.oncampus.ws&#34; ?

0 个答案:

没有答案