开发的时候,创建了两个 app : 一: channel ,提供 REST 服务,地址是 http://1.2.3.4/channel;
二、 channel-front ,是一个几乎静态化的工程,调用 channel 提供的 REST 接口,做展现。
以前用户访问的时候,是访问 http://1.2.3.4/channel-front 。 现在用户想直接通过 IP 进行访问。 能否都将两个 app 部署在根目录? 用户直接通过 http://1.2.3.4 进行访问,同时 channel-front 的工程内,请求 rest 的地址不变?
1
touzi 2016-05-13 13:21:10 +08:00 1
你请求 rest 的地址是 http://1.2.3.4/channel 吗?
如果是: 那么将 channel-front 配置成默认项目就可以, 然后可以通过 http://1.2.3.4/ 访问 如果不是就得改了. |
2
SoloCompany 2016-05-13 23:53:25 +08:00
channel 部署到 /channel
channel-front 部署到 / (也就是 ROOT) ROOT 配置为 crossContet=true 即允许跨应用转发 然后通过一个很简单的 jsp 或 servlet 执行转发 把所有 /rest 的访问全部 forward 到 /channel/rest (假设 rest 服务的路径是 /rest ) |
3
SoloCompany 2016-05-13 23:54:36 +08:00
或者前面部署个 nginx 就更简单了
配置的代理为 / -> / /rest -> /channel/rest |
4
withrock OP @touzi 多谢,我通过修改 server.xml 的方式实现了。其实你的 nginx 方式更好,这样不用把后端服务暴露在外面。
``` <Host name="localhost" appBase="D:\app" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="channel-front"></Context> <Context path="channel" docBase="channel"></Context> </Host> ``` |
5
withrock OP @SoloCompany 多谢,用 nginx 的方式最好了,而且安全。 :)
|