我有一个nodejs服务器结构如下: (app.js):
var fs = require('fs'),
http = require('http'),
https = require('https'),
express = require('express'),
connect = require('express/node_modules/connect'),
app = module.exports = express();
var ssl_options = {
key: fs.readFileSync('/etc/nginx/ssl/server.key'),
cert: fs.readFileSync('/etc/nginx/ssl/server.crt')
};
var server = https.createServer(ssl_options, app);
// EXPRESS
// app.set('view options', { layout: false });
var auth_token = "asdfasfdasdfasdf";
var express_session_id = "express.sid";
app.configure(function () {
app.use(express.cookieParser());
app.use(express.session({secret: auth_token, key: express_session_id}));
app.set("view options", {layout: false});
});
app.get('/', function (req, res) {
console.log (req.headers);
fs.readFile(__dirname + '/index.html', function(err, data){
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data, 'utf8');
res.end();
});
});
app.listen = function(port) {
server.listen(port);
console_log.log('info', "COTTONMOUTH server listening on port " + port);
};
我有一个运行上述app.js的cluster.js:
var cluster = require('cluster'),
os = require('os'),
workers = {};
if (cluster.isMaster) {
cluster.on('exit', function(worker, code, signal) {
if (worker.suicide === false) {
var exitCode = worker.process.exitCode;
console.error('worker ' + worker.process.pid + ' died ('+exitCode+'). restarting...');
cluster.fork();
}
});
var n = process.env.PROC || os.cpus().length;
for(var i = 0; i < n; i++ ) {
cluster.fork();
}
process.on('SIGTERM', function() {
console.log('[MASTER] Going for shutdown...');
for (var id in cluster.workers) {
console.log('\tkilling worker: ' + cluster.workers[id].process.pid);
cluster.workers[id].destroy();
}
console.log("[MASTER] Here's looking at you, kid.");
});
} else {
require('./app').listen(process.env.PORT || 3456);
}
我的问题是以下设置在我的localhost虚拟盒环境(在mac主机上运行的ubuntu虚拟机)上运行正常。我可以使用dev.domain.com:3456访问nodejs服务器。
但是,当我将其移至我的生产机架空间服务器(相同的环境配置和设置),并尝试通过prod.domain.com:3456访问它时
浏览器暂停一点并返回Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data.
我做了一些研究并找到了一些线索,但没有太大帮助。
任何想法?
更新
当我将端口降低到90时,似乎工作很有趣。 我现在要把它留在90号港口,但是如果有人知道为什么会这样。
由于
答案 0 :(得分:1)
当我的请求变得太大(> 65K)时,我收到此错误消息。我的解决方案是将数据减少为几个片段。
答案 1 :(得分:0)
临时Workaroud:
当我将端口降低到90时,似乎工作很有趣。我现在要把它留在90号港口,但是如果有人知道为什么会这样。
由于
答案 2 :(得分:0)
当您从前端添加其他“ /”以调用后端API时,也会遇到此问题 例如: 我的路线是 baseUrl / api / customer 但我发送请求给 baseUrl / api / customer / 这是行不通的,至少在我看来是这样。太傻了,无法注意到这一点。 也许这对某人有帮助