重定向到同一Tomcat

时间:2015-06-25 09:45:48

标签: apache tomcat

我必须说我尝试了很多可能性,但我在Apache WS中的知识并不太高级。

Apache Web Server version: 2.2.22
OS: Centos 6 64 bits
Tomcat version: 7.0.57

我需要做的是以下内容: 我有这样定义的一些简单网站:

<VirtualHost *:80>
        ServerAdmin example1@example1.com
        DocumentRoot "/opt/sites/example1/"
        ServerName example1.com
        ErrorLog logs/example1-error_log
        CustomLog logs/example1-access_log common
        RedirectMatch permanent ^/(.*) http://www.example1.com/$1
</VirtualHost>
<VirtualHost *:80>
        ServerAdmin example1@example1.com
        DocumentRoot "/opt/sites/example1/"
        ServerName www.example1.com
        ErrorLog logs/example1-error_log
        CustomLog logs/example1-access_log common
</VirtualHost>

我有一个带有几个webapp的tomcat,每个都可以通过自己的上下文访问。 我必须从不同的域访问每个这个webapps。例如,我有以下webapps:wbExample1,wbExample2,wbExample3

应该可以通过这种方式访问​​:

www.example1.com/wbExample1
www.example2.com/wbExample2
www.example3.com/wbExample3

因此,为每个网站定义的域名也必须访问特定的网络应用程序。

如需额外费用,我想知道是否可以通过网址 www.example1.com/contact 访问 www.example1.com/wbExample1 ,而无需显示名称webapp的上下文并显示文本 contact或contact.html

非常感谢你的时间。

2 个答案:

答案 0 :(得分:0)

你可以做到这一点。首先,您需要设置从Apache WebServer到Apache Tomcat的重定向。如何找到sdo here。只需删除&#34; / blog * no-jk&#34;线。

您需要做的第二件事是创建虚拟主机:

<VirtualHost *:80>
在这种情况下,

会监听所有域,你可以这样做。编辑[Tomcat] /conf/server.xml并为每个域添加虚拟主机,具有不同的名称和appBases

<Host name="example1.com" appBase="webapps-example1" unpackWARs="true" autoDeploy="true">
 ...
</Host>

创建默认&#34; webapps&#34;旁边的目录directoy:&#34; webapps-example1&#34;,...确保Tomcat可以访问它们。

重新启动Tomcat并将您的应用程序部署为虚拟主机的根上下文,即:[Tomcat] / webapps-example1 / ROOT。您可以通过在部署之前将它们重命名为ROOT.war来实现。这样您就可以在没有其他应用程序名称的情况下访问您的应用程序。

答案 1 :(得分:0)

我尝试使用mod代理而不是mod jk。

我刚刚定义了我的VirtualHost(最后四行是新的):

db.Stores.Remove(query_D);
db.SaveChanges();

通过这个设置,它像我预期的那样工作,我可以访问我的webapp的索引页面,除非在我尝试提交页面的情况下,它返回

在此服务器上找不到请求的URL / Servlet / sendFormLMD。

在Tomcat日志中没有日志,因为从未到过。

在Apache WS日志中:

访问日志 - “POST / Servlet / sendFormLMDD HTTP / 1.1”404 192

错误日志 - 文件不存在:/ opt / sites / example1 / Servlet,referer:in the accepted answer here

失败的原因很明显,它试图在普通网站所在的路径中找到servlet,而不是在tomcat中。我该怎么做才能告诉Apache在POST请求中转到tomcat?

有关详细信息,请参阅表单定义:

<configuration>
<system.web.extensions>
    <scripting>
        <webServices> 
            <jsonSerialization maxJsonLength="50000000"/> 
        </webServices> 
    </scripting> 
</system.web.extensions> 
</configuration>

其中$ {pageContext.request.contextPath}正在解析为Servlet。

感谢您的帮助!