AWS EC2端口已打开,但仍无法访问

时间:2014-02-27 17:34:52

标签: node.js amazon-web-services express amazon-ec2

我启用了端口TCP 3000,它甚至显示在EC2安全设置下启用。

虽然我无法通过该端口远程登录我的服务器,但我收到Could not open connection to the host, on port 3000: Connect failed

我正在俄勒冈州运行Ubuntu 12.04 AWS EC2 Micro实例。

我正在服务器上运行apache来托管http(s)(80/443)流量,并且我正尝试通过nodejs express通过端口3000托管其他应用。

这是我启用Apache站点的文件:

<VirtualHost *:80>
 ServerAdmin name@domain.com
 ServerName www.domain.com
 ServerAlias www.domain.com

 DocumentRoot /var/www/

 ProxyRequests off

 <Proxy *>
      Order deny,allow
      Allow from all
 </Proxy>

 <Location />
      ProxyPass http://localhost:80/
      ProxyPassReverse http://localhost:80/
 </Location>
</VirtualHost>
<VirtualHost *:80>
 ServerAdmin name@domain.com
 ServerName lobby.domain.com
 ServerAlias lobby.domain.com

 <Proxy *>
      Order deny,allow
      Allow from all
 </Proxy>

 <Location />
      ProxyPass http://localhost:3000/
      ProxyPassReverse http://lobby.domain.com/
 </Location>

</VirtualHost>

2 个答案:

答案 0 :(得分:1)

这是你想要的反向代理配置:

NameVirtualHost *:80

<VirtualHost *:80>
 ServerAdmin name@domain.com
 ServerName www.domain.com
 ServerAlias www.domain.com

 DocumentRoot /var/www/

</VirtualHost>

<VirtualHost *:80>
  ServerAdmin name@domain.com
  ServerName lobby.domain.com
  ServerAlias lobby.domain.com

 <Proxy *>
      Order deny,allow
      Allow from all
 </Proxy>

 <Location />
     ProxyPass http://127.0.0.1:3000/
     ProxyPassReverse http://127.0.0.1:3000/
 </Location>

</VirtualHost>

确保从命令行启用apache代理模块:

a2enmod proxy
a2enmod proxy_connect
a2enmod proxy_http
a2enmod proxy_balancer
service apache2 restart

答案 1 :(得分:0)

确保您在0.0.0.0而不是127.0.0.1localhost上绑定您的应用。听起来您的应用程序没有在服务器外部监听IP地址。

(还要确保你的node.js应用程序也在运行)

要列在0.0.0.0上,您需要在应用程序中使用以下内容:

var app = connect().use(connect.static('public')).listen(3000, "0.0.0.0");