Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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
Javascript Node js可以在内部连接,但不能在外部连接_Javascript_Node.js_Apache_Nodemon - Fatal编程技术网

Javascript Node js可以在内部连接,但不能在外部连接

Javascript Node js可以在内部连接,但不能在外部连接,javascript,node.js,apache,nodemon,Javascript,Node.js,Apache,Nodemon,我正在尝试连接到本地服务器上的js文件。我想能够把在外部ip地址和端口,并有它运行的应用程序外部。目前可以在本地执行此操作。以下是我的server.js文件代码: var express = require('express'); var app = express(); var mysql = require('mysql'); var connectionpool = mysql.createPool({ host : '127.0.0.1', user

我正在尝试连接到本地服务器上的js文件。我想能够把在外部ip地址和端口,并有它运行的应用程序外部。目前可以在本地执行此操作。以下是我的server.js文件代码:

var express = require('express');
var app     = express();

var mysql   = require('mysql');

var connectionpool = mysql.createPool({
  host     : '127.0.0.1',
  user     : 'root',
  password : '',
  database : 'development',
  port: 3306,
  connectionLimit: 50
});
var UAParser = require('ua-parser-js');
var bodyParser = require('body-parser');

// set the static files location /public/img will be /img for users
app.use(express.static(__dirname + '/public')); 
app.use(express.logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true
})); // pull information from html in POST


require('./config/signup.js')(app, express, connectionpool, UAParser);

//Setup for external access
var http = require('http');
http.createServer(function(req, res){
  //res.writeHead(200, {'content-type': 'text/plain'});
  //res.end('It works');
}).listen(8080);

// Start app on port 8080
/*app.listen(8080);
console.log('Rest Demo Listening on port 8080');*/
目前,我可以从外部连接到服务器,但最终我会看到默认的主页,这只是一小段文字。我希望能够输入外部ip地址和端口,让它立即开始运行我的应用程序,而不必浏览目录。如果这有什么帮助的话,我也在运行apache

固定的: 这行代码安装了http.createServer函数,使其工作正常

var server = http.createServer(app).listen(8080);

您可以这样调整/创建apache配置:

<VirtualHost *:80>
    ServerName (SERVER NAME HERE)
    ServerAlias  (SERVER ALIAS HERE)
    ErrorLog "/var/log/httpd/nodejs-error.log"
    CustomLog "/var/log/httpd/nodejs-access.log" common

    #######################
    # Redirect to node.js #
    #######################
    ProxyRequests Off
    ProxyPreserveHost On

    ProxyPass               /            http://localhost:8080/
    ProxyPassReverse        /            http://localhost:8080/

</VirtualHost>

服务器名(此处为服务器名)
服务器别名(此处为服务器别名)
ErrorLog“/var/log/httpd/nodejs error.log”
CustomLog“/var/log/httpd/nodejs access.log”通用
#######################
#重定向到node.js#
#######################
代理请求关闭
代理主机
ProxyPass/http://localhost:8080/
ProxyPassReverse/http://localhost:8080/
您应该将其放在apacheconf.d目录(通常是/etc/httpd/conf.d)中的类似“nodejs.conf”的文件中


编辑:注意-如果您使用的是默认的apache配置,它位于conf目录中,名为httpd.conf。您可以编辑其中的VirtualHost条目以匹配上面的内容。

您是直接使用端口8080访问应用程序,还是使用Apache使用mod_proxy代理它?听起来您是在访问Apache而不是节点。杀死apache并将8080更改为80。您可能必须获得超级用户权限才能在该端口上侦听。连接到apache(端口80/8080)或mysql(3306)不起作用?已终止apache,但当我尝试在端口80上侦听时,我得到错误:listen EACCES。我如何获得超级用户权限来监听该端口?这将允许我一起运行apache和nodejs?这就是想法-是的。Apache将代理所有请求到节点。通过这种方式,您不需要使用时髦的权限运行nodejs。这会是启用conf的文件夹吗?如果您实际使用apache托管内容,那么您可以将ProxyPass和ProxyPassReverse设置为root(/),而不是将它们设置为其他(/node),并且它只会为该路径代理到node。您使用的linux发行版是什么?在我的debian/ubuntu/centos服务器上,配置位于/etc/httpd/conf和/etc/httpd/conf.d。