如何 运行 在同一台服务器上使用不同端口的多个跨平台 Web 应用程序?
how to run multiple cross platform web application on the same server using different ports?
我正在 运行在 tomcat 7.0 上安装一个 java 网络应用程序,该应用程序安装在 media temple Ubuntu 16.04 服务器上。该应用程序在端口 8080 上 运行ning,我有一个绑定到该端口的域。
例如public-服务器 IP:8080 xyz.com
现在,我想在同一个 Linux 服务器上使用端口 3000 运行 一个节点 js 应用程序(rocket-chat)。我已经配置了整个应用程序,应用程序正在 运行ning localhost:3000/ 但是当我尝试使用服务器的 public IP 访问应用程序时(例如 public-ip:3000/),我无法访问它。
我已经使用命令允许端口 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 和节点 js)?谁能帮帮我。
只需将 nodejs 应用程序绑定到接口 0.0.0.0
而不是 127.0.0.1
。
在您的 Apache 配置中,您应该使用 localhost 而不是 public ip。所以代替:
ProxyPass /rocketchat http://public-ip-of-server:3000/
使用:
ProxyPass /rocketchat http://localhost:3000/
我正在使用 Ubuntu 服务器,所以那里没有 httpd.conf,所以我在 apache2 的站点可用文件夹中创建了另一个文件(例如 xyz.conf)。
我有两个域指向同一个媒体寺庙名称服务器,
通过在 xyz.conf
中创建虚拟主机,我使用一个域指向端口 8080 上的 tomcat 应用程序和端口 3000 上的节点 js 应用程序的另一个域
<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 来解决问题。
我正在 运行在 tomcat 7.0 上安装一个 java 网络应用程序,该应用程序安装在 media temple Ubuntu 16.04 服务器上。该应用程序在端口 8080 上 运行ning,我有一个绑定到该端口的域。 例如public-服务器 IP:8080 xyz.com 现在,我想在同一个 Linux 服务器上使用端口 3000 运行 一个节点 js 应用程序(rocket-chat)。我已经配置了整个应用程序,应用程序正在 运行ning localhost:3000/ 但是当我尝试使用服务器的 public IP 访问应用程序时(例如 public-ip:3000/),我无法访问它。
我已经使用命令允许端口 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 和节点 js)?谁能帮帮我。
只需将 nodejs 应用程序绑定到接口 0.0.0.0
而不是 127.0.0.1
。
在您的 Apache 配置中,您应该使用 localhost 而不是 public ip。所以代替:
ProxyPass /rocketchat http://public-ip-of-server:3000/
使用:
ProxyPass /rocketchat http://localhost:3000/
我正在使用 Ubuntu 服务器,所以那里没有 httpd.conf,所以我在 apache2 的站点可用文件夹中创建了另一个文件(例如 xyz.conf)。 我有两个域指向同一个媒体寺庙名称服务器, 通过在 xyz.conf
中创建虚拟主机,我使用一个域指向端口 8080 上的 tomcat 应用程序和端口 3000 上的节点 js 应用程序的另一个域<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 来解决问题。