【问题标题】:Pinging a Node.js server from PHP on AWS在 AWS 上从 PHP ping Node.js 服务器
【发布时间】:2011-07-07 16:57:36
【问题描述】:

我在 node.js 中编写了一个很长的程序,但我希望我的应用程序控件的 PHP 端能够启动它。我的节点是这样的:

var http = require('http');

http.createServer(function (req, res) {
  console.log('Got request')

  try{
    doProcedure()
  } catch(e) {
    console.log('Really bad error while trying to do the procedure:')
    console.error(e.stack ? e.stack : e)
  }

}).listen(8124, "127.0.0.1");

当我在本地机器上运行它时,http://localhost:8124 将正确触发事件。在 aws 上,我添加了 8124 端口,但对 mydomain.com:8124 的请求没有被节点接收。

我尝试停止 httpd,然后让节点监听端口 80,以排除端口未正确转发,但它仍然什么也没看到。

我猜有两个问题:

  1. 如何让 Node 作为守护进程进行监听,以便我可以传递请求?(“更新用户 x”、“更新用户 y”、“更新所有用户”等)
  2. 如何从 php ping 该守护程序以在 AWS 环境中启动这些程序?

额外问题:我应该这样做有更好的方法吗?

谢谢大家,
~约旦

【问题讨论】:

    标签: php node.js amazon-web-services


    【解决方案1】:

    您是否尝试在 createServer.listen() 调用中使用服务器的 IP 地址(而不是 127.0.0.1)?

    【讨论】:

    • 在 50.17.254.0:8124 上监听给了我错误:“错误:EADDRNOTAVAIL,无法分配请求的地址”
    【解决方案2】:

    如果省略listen() 的第二个参数,节点将监听所有IP 地址。这样您就可以在本地运行相同的代码进行测试,也可以在您的 EC2 实例上运行。

    在您的 catch 块中,您可能还希望向客户端发送回 HTTP 错误响应。

    【讨论】:

    • 客户端没有查看任何内容,这只是我从同一台机器上的 php 发出的 HTTP 触摸以启动该过程。
    • 叮叮叮!省略 IP 可以让事情正常进行,这是一个很好的本地/生产技巧。谢谢!
    【解决方案3】:

    你应该有一个 10.* ip iirc 用于 aws,你的弹性/动态 ip 不能绑定到

    【讨论】:

    • 我的印象是我的弹性 IP 是我的域连接到的 IP,也是任何网络服务器都应该监听的 IP。在哪里可以找到这个 10.* ip?
    • 省略要监听的 IP 使服务器监听所有 IP 并完美运行。
    • /sbin/ifconfig -a,在我的 EC2 实例上,我有一个 10.* IP,并且我有一个用于连接的弹性外部 IP。 ext ip 实际上并没有绑定到服务器,它就像端口转发的 1:1 nat 或其他东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    相关资源
    最近更新 更多