在 Apache 别名上运行 Tomcat 或将端口号映射到主机名

在 Apache 别名上运行 Tomcat 或将端口号映射到主机名

我在端口 80 上安装了 WAMP,在端口 8080 上安装了 Apache,在端口 8080 上安装了 Tomcat。因此,我可以从 访问我的 php 项目,从 访问我的localhost/java 项目。localhost:8080/ 我可以将 Tomcat 安装或映射到更好的地址localhost/java/或更好的是假名,javahost而不是localhost 我已经在 HOSTS 文件中添加了一行

127.0.0.1:8080       javahost

但那不管用。而且我无法 ping 通 javahost。我猜它不应该那样工作。

有出路吗?

带有 APACHE 2.2.11 的 WAMPSERVER 2

TOMCAT 6.0.29

WINDOWS XP 专业版 SP3

更新:

感谢@bindbn

我将 hosts 文件更改为

127.0.0.1 javahost

我在 Apache 中启用了代理模块然后将其添加到 httpd.conf 的末尾

<VirtualHost javahost>
ProxyPreserveHost On

ProxyPass         /  http://localhost:8080
ProxyPassReverse  /  http://localhost:8080

</VirtualHost> 

同时使用 Virtualhost 和 mod_proxy

接下来javahost还会加载托管在端口 80 上的 php 网站,而不是 localhost:8080 网站。

更新 在互联网上找到了这个http:// confluence.atlassian.com/display/CONF30/Using+Apache+with+mod_proxy

# Put this in the main section of your configuration (or desired virtual host, if using Apache virtual hosts)
ProxyRequests Off
ProxyPreserveHost On

#<Proxy *>// changed to below.
<Proxy javahost:80>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass /confluence http://localhost:8080/confluence 
ProxyPassReverse /confluence http://localhost:8080/confluence
<Location /confluence>
    Order allow,deny
    Allow from all
</Location>

将 confluence 更改为 java (并将 localhost:8080/confluence 更改为 localhost:8080)给了我@lladnar 的答案,它可以很好地将 localhost/java 和 javahost/java 重定向到 localhost:8080,但这不能用于仅将 javahost 重定向到 localhost:8080 并保持 localhost 从端口 80 读取? 我还将以下几行改为:

<Proxy javahost:80>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

现在 javahost 重定向到 localhost:8080,但 localhost 也重定向到 localhost:8080,因此我无法访问我的 php 网站所在的 localhost:80 端口。

我哪里做错了?有什么想法吗?

我的目标是将 javahost (或其他 IP)重定向到 localhost:8080,并使 localhost:80 可从 localhost 和 127.0.0.1 以及我的电脑的内联网 IP 访问

已更新答案 这有效。我将其添加到 httpd.conf 的末尾。代理模块和代理 http 模块已打开。我的工作站有一个 LAN IP(192.168.1.4)。我添加了另一个 IP(192.168.1.5),并使用该 IP 代替 javahost 名称。现在 192.68.1.5 打开我的 Tomcat 网站,192.168.1.4 打开我的 PHP 网站。

<VirtualHost 192.168.1.5>
ProxyPreserveHost On

ProxyPass         /  http://localhost:8080/
ProxyPassReverse  /  http://localhost:8080/

</VirtualHost> 

感谢@Caleb 提出的多个 IP 的想法。感谢@lladnar 和@bindbn 提供的代理代码!(我希望我可以分割答案信用,因为我没有代表(代表 6),所以我不能给出任何代表)

当前设置存在问题 目前内网用户通过http://workstationname/来访问内网PHP网站。他们现在必须使用 JAVA 和 PHP 网站的 IP。有没有办法将特定主机名绑定到特定 IP 地址

答案1

您的主机文件用于地址查找,而不是强制路由到特定端口。

您没有在这里指定您的平台,因此这些是一般的可能解决方案:

  1. 向您的计算机添加第二个 IP 地址,并将 apache 绑定到一个 IP 地址,将 tomcat 绑定到另一个 IP 地址。然后,您可以使用 hosts 来指定哪个是哪个。
  2. 在 apache 中设置别名以转发到另一个 URL。
  3. 在 apache 中设置您的虚拟主机,以便它识别不同的名称(您在 hosts 文件中设置),并且如果请求是针对其他主机的,则将请求转发或代理到 tomcat。

答案2

编辑(删除:8080)

127.0.0.1       javahost

在 apache conf virtualhost javahost 中添加

ProxyPass         /  http://localhost:8080
ProxyPassReverse  /  http://localhost:8080

答案3

在您当前的问题中:

更改<VirtualHost javahost><VirtualHost *:80> ,以便它在所有接口上仅监听端口 80。localhost如果您只希望从本地计算机访问该站点,则可以将星号替换为。

然后,将 proxypass 和 proxypassreverse 更改为:

ProxyPass         /java  http://localhost:8080
ProxyPassReverse  /java  http://localhost:8080

然后http://本地主机/java当您通过浏览器访问时,应该自动代理到 Tomcat。

相关内容