2017-05-14 64 views
0

我目前正在学习如何使用Node js和其他JavaScript apis创建服务器,并且我已经构建了一个HTTP和HTTPS服务器,它可以在我的nat网络的每个pc navigator上正常工作,但是当我尝试在我的android上使用https服务器时移动设备:https://192.168.1.20:8443这是我建立我的node.js服务器,它不会加载,并说该网页无法正常工作,虽然它与http协同工作。HTTPS服务器不能在Android手机上工作,但HTTP可以吗?

我也想知道如果我可以使我的服务器可见或使用我的路由器公共IP地址访问它,我怎么能做到这一点。

这是我的服务器代码:

var fs = require('fs'); 
var http = require('http'); 
var https = require('https'); 
var cors = require('cors'); 
var privateKey = fs.readFileSync('host.key', 'utf8'); 
var certificate = fs.readFileSync('host.cert', 'utf8'); 

var credentials = {key: privateKey, cert: certificate}; 
var express = require('express'); 
var app = express(); 
app.use(cors()); 
app.use('/work', express.static('/.')) 
app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
    console.log('Servidor en marxa.'); 
}); 


var httpServer = http.createServer(app); 
var httpsServer = https.createServer(credentials, app); 

httpServer.listen(8080); 
httpsServer.listen(8443); 

回答

0

几小时后我刚刚意识到我需要我的路由器端口转发到那里,我有我的Node.js服务器构建的。我必须将HTTP(#80)和HTTPS(#443)两者都端口转发给公共IP地址。

还必须修改我的Javascript服务器代码的一部分。

var fs = require('fs'); 
var http = require('http'); 
var https = require('https'); 
var cors = require('cors'); 
var privateKey = fs.readFileSync('host.key', 'utf8'); 
var certificate = fs.readFileSync('host.cert', 'utf8'); 

var credentials = {key: privateKey, cert: certificate}; 
var express = require('express'); 
var app = express(); 
app.use(cors()); 
var path = require('path'); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
    console.log('Servidor en marxa.'); 
}); 

// your express configuration here 

var httpServer = http.createServer(app); 
var httpsServer = https.createServer(credentials, app); 

httpServer.listen(80,"0.0.0.0"); 
httpsServer.listen(443,"0.0.0.0"); 
var io = require("socket.io")(httpServer); 
相关问题