【问题标题】:nodejs serve not working responding connection timesout节点js服务不工作响应连接超时
【发布时间】:2017-03-08 04:45:16
【问题描述】:

我的 server.js 中有这个:

var app = require('express')();
var http = require('http');
http.createServer(function(request, response) {
      response.writeHead(200, {"Content-Type": "text/plain"});
      response.write("It's alive!");
      response.end();
}).listen(3000);

这在本地运行良好,但在我部署它并尝试访问我的shared.domain.ma:3000 时却不行 在客户端,我有一个 Websocket 试图连接到该地址中的我的服务器,但它给了我net::ERR_CONNECTION_TIMED_OUT ann 我尝试了curl,结果再次相同 - 这个问题可能是什么原因?

【问题讨论】:

  • 尝试将端口更改为 80,以防有防火墙。确保它没有被使用。
  • 是的,我刚刚检查了它该死的防火墙。我不能使用 80 或 8080,因为它们已经被使用了!我怎样才能为这个子域转发 3000 到 80
  • 如果您使用的是 linux 服务器,请遵循此要点gist.github.com/kentbrew/776580

标签: javascript node.js websocket


【解决方案1】:

您提供的信息很少,但在您的一些 cmets 之后它更清楚:

是的,我刚刚检查了该死的防火墙。我不能使用 80 或 8080,因为它们已经被使用了!我怎样才能为这个子域转发 3000 到 80

我认为您想将 80 转发到 3000,而不是相反。

你没有说你用什么服务器做反向代理。如果是 nginx,那么你可以使用这样的东西:

server {
    listen 80;
    server_name www.example.com;
    location / {
        proxy_pass http://localhost:3000;
    }
}

有关详细信息,请参阅此答案:

当然,您可以对 Apache 做同样的事情,只是使用不同的配置。搜索反向代理配置。

【讨论】:

    【解决方案2】:

    如 cmets 中所述,您已被防火墙保护。 对于 nginx,请检查其他答案。 对于Apache,使用如下配置,别忘了a2enmod proxy

    #/etc/httpd/conf.d/node.conf
    <VirtualHost *:80>
       ServerAdmin webmaster@localhost
       ServerName mydomain
       ServerAlias www.mydomain.com
                
       ProxyRequests Off
       ProxyPreserveHost On
       ProxyVia Full
       <Proxy *>
          Require all granted
       </Proxy>
     
       <Location />
          ProxyPass http://127.0.0.1:3000
          ProxyPassReverse http://127.0.0.1:3000
       </Location>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 2020-09-08
      • 1970-01-01
      • 2017-07-23
      • 2022-01-03
      相关资源
      最近更新 更多