Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js https API服务器,但http用于静态文件_Node.js_Express - Fatal编程技术网

Node.js https API服务器,但http用于静态文件

Node.js https API服务器,但http用于静态文件,node.js,express,Node.js,Express,我正在为iPhone客户端制作一个带有Node.js的API服务器。我还使用这个节点服务器发回一些请求的文件,如静态图像等 现在,我正在使用以下代码创建https服务器: https.createServer(options,app).listen(app.get('port'), function(){ console.log("Express server listening on port " + app.get('port')); }); 这很好用 但是,我希望通过HTTP而不

我正在为iPhone客户端制作一个带有Node.js的API服务器。我还使用这个节点服务器发回一些请求的文件,如静态图像等

现在,我正在使用以下代码创建https服务器:

https.createServer(options,app).listen(app.get('port'), function(){
    console.log("Express server listening on port " + app.get('port'));
});
这很好用

但是,我希望通过HTTP而不是HTTPS提供静态文件。这可能吗

我使用以下代码提供静态文件:

app.use(express.static(path.join(__dirname, 'uploads')));

谢谢大家!

如果您希望在同一个端口上执行此操作,那么这几乎是的副本

但是,如果您有多个端口,一个用于HTTP,另一个用于HTTPS,您可以尝试只启动两个服务器实例。创建两个可以在同一个节点文件中完成的应用程序,一个用于实际API,另一个较小的应用程序称为staticApp,用于提供静态内容。那么,启动API服务器的代码是相同的,您可以使用

http.createServer(app).listen(app.get('port'), function(){
    console.log("Static server listening on port " + app.get('port'));
});
为了避免混淆,您还可以将API服务器中“port”变量的名称更改为类似于“ssl port”的名称,这样您就不会混淆

这将有效地创建两个服务器;一个是通过HTTP为静态内容提供服务,另一个是通过HTTPS为原始API服务器提供服务。只要确保您使用的是80/443标准,以便端口由协议ie隐式解释,并转到正确的位置,或者您的负载平衡器或代理您的流量的任何设备正在将正确的协议发送到正确的端口

请注意,这将为任何试图通过HTTP访问API的人提供404。一个解决方案是添加与API端点匹配的通用路由,如API/*,如果您的结构设置为使用https协议将用户重定向到同一路径

回应你的评论

两个在一个文件中生成两个应用程序,只需执行以下操作:

var api = express();

api.configure(function(){
    app.set('ssl_port', [your https port]);
    //your api code
});


var static = express();

static.configure(function () {
    app.set('port', [your http port]); // Set the port
    app.use(express.static(path.join(__dirname, 'static'))); //This will serve everything inside '/static' as static content
})
也可以创建两个服务器:

//HTTPS Api Server
https.createServer(https_options, app).listen(app.get('ssl_port'), function(){
  console.log("Api server listening on port " + app.get('ssl_port'));
});

//HTTP Static Server
http.createServer(static).listen(static.get('port'), function () {
    console.log('Static server listening on %s', static.get('port'));
});

如果您希望在同一个端口上执行此操作,那么这几乎是的一个副本

但是,如果您有多个端口,一个用于HTTP,另一个用于HTTPS,您可以尝试只启动两个服务器实例。创建两个可以在同一个节点文件中完成的应用程序,一个用于实际API,另一个较小的应用程序称为staticApp,用于提供静态内容。那么,启动API服务器的代码是相同的,您可以使用

http.createServer(app).listen(app.get('port'), function(){
    console.log("Static server listening on port " + app.get('port'));
});
为了避免混淆,您还可以将API服务器中“port”变量的名称更改为类似于“ssl port”的名称,这样您就不会混淆

这将有效地创建两个服务器;一个是通过HTTP为静态内容提供服务,另一个是通过HTTPS为原始API服务器提供服务。只要确保您使用的是80/443标准,以便端口由协议ie隐式解释,并转到正确的位置,或者您的负载平衡器或代理您的流量的任何设备正在将正确的协议发送到正确的端口

请注意,这将为任何试图通过HTTP访问API的人提供404。一个解决方案是添加与API端点匹配的通用路由,如API/*,如果您的结构设置为使用https协议将用户重定向到同一路径

回应你的评论

两个在一个文件中生成两个应用程序,只需执行以下操作:

var api = express();

api.configure(function(){
    app.set('ssl_port', [your https port]);
    //your api code
});


var static = express();

static.configure(function () {
    app.set('port', [your http port]); // Set the port
    app.use(express.static(path.join(__dirname, 'static'))); //This will serve everything inside '/static' as static content
})
也可以创建两个服务器:

//HTTPS Api Server
https.createServer(https_options, app).listen(app.get('ssl_port'), function(){
  console.log("Api server listening on port " + app.get('ssl_port'));
});

//HTTP Static Server
http.createServer(static).listen(static.get('port'), function () {
    console.log('Static server listening on %s', static.get('port'));
});

谢谢你的回答!我想澄清一下如何从同一app.js文件中创建两个应用程序。抱歉,我是node的新手,所以我不确定如何重新构造现有的app.js文件。我在回答中添加了一个示例谢谢你的回答!我想澄清一下如何从同一app.js文件中创建两个应用程序。抱歉,我是node的新手,所以我不确定如何重新构造现有的app.js文件。我在答案中添加了一个示例