简单来说:
IIS 7+Apache Tomcat 7+ isapi_redirect.dll
:
我在 下有一个已部署并正在运行的 Tomcat 应用程序http://localhost:8080/my_app
。
我希望在 下看到相同的内容http://my_app.local
(而不是默认的 Tomcat 站点 [您可以在下面看到])。
我设置了isapi_redirect.dll
,所以现在my_app.local
的内容等于localhost:8080
,但这还不够,我想映射localhost:8080/my_app
到 下my_app.local
。(我确实有127.0.0.1 my_app.local
hosts 文件,所以我已经可以打开my_app.local
,但现在它只显示默认的 Tomcat 站点(与 下可用的相同http://localhost:8080
))。
请阅读我已经尝试过的内容:
更长的解释是:
我有IIS 7(7.5.7600.16385)和阿帕奇 Tomcat/7.0.22已安装。
- 我在 Tomcat 中部署了一个应用程序(我们称之为“
my_app
”),现在可以在 上访问http://localhost:8080/my_app
,运行良好。我在 IIS 面板中添加了一个新网站,其中包含部署的 Tomcat 的路径my_app
,如下所示:“c:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\my_app
” - 我绑定了主机名
my_app.local
。 - 之后我配置
isapi_redirect.dll
如下这(或者 那)。 - 现在,当我打开时
http://my_app.local
,我可以看到默认的 Tomcat 站点(见下文),它与下的内容相同http://localhost:8080/
!!(这就是问题所在!!!) - 但
http://my_app.local
我希望看到与下相同的内容http://localhost:8080/my_app
。
我该怎么做?提前谢谢您!
我的配置文件:
- isapi_redirect.properties(我建立了到 c:\tomcat 的目录连接,因此这也有效:))
- 工人.属性
- uriworkermap.properties
- rewrites.properties(空)
更新
我也发现了这一点:http://tomcat.apache.org/connectors-doc/generic_howto/proxy.html
情况 B:您需要隐藏发往应用程序的所有请求的路径组件。以下是针对这种情况的解决方案,其中您想要隐藏第一个路径组件 /myapp。更复杂的操作留给读者作为练习。首先是针对 Apache httpd 情况的解决方案:
- 使用 mod_rewrite 将 /myapp 添加到所有请求,然后转发到后端:[...]
- 使用 mod_headers 重写您的应用程序可能返回的任何 HTTP 重定向。[...]
- 再次使用 mod_headers 来重写您的应用程序可能设置的任何 cookie 中包含的路径。[...]
如果您使用 Microsoft IIS作为一个 Web 服务器,ISAPI 插件提供了一种使用内置功能执行第一步的方法。您定义一个映射文件对于简单的前缀更改,如下所示:
# Add a context prefix to all requests ... /=/myapp/ # ... or change some prefix ... /oldapp/=/myapp/
然后将文件的名称放入
rewrite_rule_file
注册表或isapi_redirect.properties
文件的条目中。在您的uriworkermap.properties
文件中,您仍然需要在重写之前按原样映射 URL![...]
不支持步骤 2(重写重定向响应)或步骤 3(重写 cookie 路径)。
令我惊讶的是,它写道“不支持步骤 2(重写重定向响应)或步骤 3(重写 cookie 路径)。“,我不知道这是否仍然正确,但那又怎样?我又陷入困境了吗?
答案1
根据你的目标(容易记住的网址?),也许可以重定向我的_app.本地->我的_app.本地:8080/我的_app?
这不会隐藏但是,目标站点。
在 my_app.local 设置一个新的 IIS 站点,并让它重定向到您的 :8080/my_app 应用程序。
http://technet.microsoft.com/en-us/library/cc732930(WS.10).aspx
答案2
这似乎就是您所需要的,URL 重写和应用程序路由。