我在端口 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>
接下来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
您的主机文件用于地址查找,而不是强制路由到特定端口。
您没有在这里指定您的平台,因此这些是一般的可能解决方案:
- 向您的计算机添加第二个 IP 地址,并将 apache 绑定到一个 IP 地址,将 tomcat 绑定到另一个 IP 地址。然后,您可以使用 hosts 来指定哪个是哪个。
- 在 apache 中设置别名以转发到另一个 URL。
- 在 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。