2017-04-18 108 views
0

我在tomcat 7.0上运行java web应用程序,它是在Ubuntu 16.04服务器上安装的。该应用程序在端口8080上运行,并且我有一个绑定到端口的域。 例如public-ip-of-server:8080 xyz.com 现在,我想在使用端口3000的同一台Linux服务器上运行节点js应用程序(rocket-chat)。我配置了整个应用程序,并且应用程序正在运行localhost:3000 /但当我尝试使用服务器的公共IP访问应用程序(例如public-ip:3000 /)时,我无法访问它。如何在使用不同端口的相同服务器上运行多个跨平台Web应用程序?

我已经允许3000端口的流量使用命令,

ufw allow 3000 

我还编辑apache2.conf,

ProxyPass /rocketchat http://public-ip-of-server:3000/ 
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module 
modules/mod_proxy_http.so 

但是改变该参数后,我不能重新启动的Apache2服务。 所以我恢复了更改。

我应该怎么做才能在同一台Linux服务器上运行应用程序(java和node js)?任何人都可以请帮我。

回答

0

在你的Apache配置中,你应该使用本地主机而不是公共IP。因此,而不是:

ProxyPass /rocketchat http://public-ip-of-server:3000/ 

使用:

ProxyPass /rocketchat http://localhost:3000/ 
0

只需将nodejs应用绑定到接口0.0.0.0而不是127.0.0.1即可。

+0

感谢您的回复。 –

0

我使用Ubuntu的服务器,以便httpd.conf中不存在那里,所以我创建了另一个文件中,Apache2的部位可用文件夹(例如xyz.conf)。 我有两个结构域,其指向相同的媒体寺名服务器, 我所使用的一个域用于指向端口8080 Tomcat应用程序以及用于节点的js上端口3000的应用程序的另一个域,通过在使xyz.conf虚拟主机

<VirtualHost *:80> 
    ServerName xyz.com 
    ProxyPass/http://localhost:3000/ 
    ProxyPassReverse/http://localhost:3000/ 
</VirtualHost> 
<VirtualHost *:80> 
    ServerName abc.com 
    ProxyPass/http://localhost:8080/ 
    ProxyPassReverse/http://localhost:8080/ 
</VirtualHost> 

在此之后我启用了代理模式下使用命令:

sudo a2enmod proxy 

,也使这个xyz.conf文件站点配置文件,使用命令,

sudo a2ensite xyz.conf 

它会问你要重新加载Apache2的服务, 只是重新加载它,然后重新启动,

e.g sudo systemctl restart apache2.service 

通过将请求转发,这是对的Apache2的80端口接收到Tomcat解决的问题:8080和的NodeJS: 3000,通过创建虚拟主机。

相关问题