无法访问Google Compute Engine上托pipe的NodeJS Express应用程序

我在google云上有一个f1-micro实例。 IN安装了ubuntu 14.04,NodejS 0.10和mongoDB。 现在我已经与在本地主机上完美工作的yeoman进行了快速的应用。 但是当我尝试在实例中运行它时,我无法访问它!

在这里,我做了什么:

  1. 提交本地代码到BitBucket
  2. 通过SSH将BitBUcket代码复制到Google Compute Engine
  3. 运行命令grunt
  4. 通过端口号访问Google提供的外部IP 在浏览器,但它说这个网页不可用

这是我的源代码:

** app.js **

'use strict'; // Module dependencies. var express = require('express'), path = require('path'), fs = require('fs'), methodOverride = require('method-override'), morgan = require('morgan'), bodyParser = require('body-parser'), errorhandler = require('errorhandler'); var app = module.exports = exports.app = express(); app.locals.siteName = "Server"; // Connect to database var db = require('./config/db'); app.use(express.static(__dirname + '/public')); // Bootstrap models var modelsPath = path.join(__dirname, 'models'); fs.readdirSync(modelsPath).forEach(function (file) { require(modelsPath + '/' + file); }); var env = process.env.NODE_ENV || 'development'; if ('development' == env) { app.use(morgan('dev')); app.use(errorhandler({ dumpExceptions: true, showStack: true })); app.set('view options', { pretty: true }); } if ('test' == env) { app.use(morgan('test')); app.set('view options', { pretty: true }); app.use(errorhandler({ dumpExceptions: true, showStack: true })); } if ('production' == env) { app.use(morgan()); app.use(errorhandler({ dumpExceptions: false, showStack: false })); } app.engine('html', require('ejs').renderFile); app.set('view engine', 'html'); app.use(methodOverride()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); // Bootstrap routes var routesPath = path.join(__dirname, 'routes'); fs.readdirSync(routesPath).forEach(function(file) { app.use('/', require(routesPath + '/' + file)); }); // Bootstrap api var apiPath = path.join(__dirname, 'api'); fs.readdirSync(apiPath).forEach(function(file) { app.use('/api', require(apiPath + '/' + file)); }); // Start server var port = process.env.PORT || 3000; app.listen(port, function () { console.log('Express server listening on port %d in %s mode', port, app.get('env')); }); 

** Gruntfile.js **

 module.exports = function(grunt) { require('load-grunt-tasks')(grunt); grunt.initConfig({ // Configure a mochaTest task mochaTest: { test: { options: { reporter: 'spec' }, src: ['test/**/*.js'] } }, watch: { options: { livereload: true, }, express: { files: [ '*.js','routes/*.js', 'models/*.js', 'config/*.js','api/*.js' ], tasks: [ 'express:dev' ], options: { spawn: false // Without this option specified express won't be reloaded } } }, express: { options: { port : 3000, node_env: 'development' }, dev: { options: { script: 'app.js', node_env: 'development' } }, prod: { options: { script: 'app.js', node_env: 'production' } } }, open: { server: { url: 'http://localhost:3000' } } }); grunt.registerTask('test', 'mochaTest'); grunt.registerTask('server', function(arg) { if(arg && arg == 'prod') { grunt.task.run([ 'express:prod', 'open', 'watch' ]); } else { grunt.task.run([ 'express:dev', 'open', 'watch' ]); } }); grunt.registerTask('default', [ 'server' ]); grunt.registerTask('dist', [ 'server:prod' ]); }; 

我试图改变与谷歌提供的内部IP app.listen,但仍然没有运气。 有任何想法吗?

好吧,我只是想出来。 其实很简单。 问题只在港口。 我只是需要更改防火墙设置,以允许任何来源的端口。 而已。

  1. 转到Google云端控制台。
  2. networking>防火墙规则。
  3. 使用tcp和udp范围1-65535查找条目“default-allow-internal”。 编辑它并更改源filter以允许它从任何来源。
    1. 重新启动应用程序。 它应该现在工作。

更新2017年4月27日:GCE上的stream量现在有所变化。 编辑源filter – > IP范围为0.0.0.0/0