2017-04-18 110 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,通過創建虛擬主機。

相關問題