我正在尝试在Vagrant虚拟机上部署我的webapp,并且遇到Tomcat重定向和端口问题。
以下是配置:
Guest OS是在Virtualbox上运行的Cent OS 6.3。
Apache 2.4已在具有主机端口4000的guest虚拟机上安装并运行 被转发到客户端口80。
Tomcat 7已在主机端口4040正在的guest虚拟机上安装并运行 转发到访客端口8000(用于JPDA调试器)。
安装mod_jk以将请求从Apache转发到Tomcat。
在大多数情况下,它有效。我在/ mywebapp上部署了一个webapp,我可以通过在{strong>主机浏览器中输入http://localhost:4000/mywebapp来访问该文件。当mywebapp应用程序执行凭据检查时会发生此问题,如果没有登录用户,则会发出重定向。
此时发生的情况是,我的主机浏览器网址已更改为 https://localhost /mywebapp/login.jsp而不是 {{3 } /mywebapp/login.jsp,这导致我收到错误,因为我的主机上没有运行Apache。
我知道mod_jk正在运行,因为我可以调试mywebapp应用程序并将其跟踪到转发实际发生的位置,所以我知道请求已成功转发到 Tomcat。因此我认为问题在于Tomcat而不是Apache。
这是我的server.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
<Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.core.JasperListener"/>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<GlobalNamingResources>
<Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
</GlobalNamingResources>
<Service name="Catalina">
<Connector
connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443" />
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
<Engine defaultHost="localhost" name="Catalina">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/>
</Host>
</Engine>
</Service>
</Server>
如果我需要分享任何其他配置文件,请告诉我。
如果我手动ssh到来宾VM并运行
wget localhost/mywebapp
按预期返回页面。我不确定这意味着什么。
答案 0 :(得分:1)
HTTPS和HTTP在不同的端口上运行(默认情况下分别为443和80),因此https://localhost:4000没有任何意义,因为HTTP已经在使用该端口。
您需要:
localhost
。选项2将是我的建议。