Gwt 链接端口80上的apache web服务器和端口8080上的tomcat webapp
在端口80上,我有普通的apache web服务器 在端口8080上,我有带有客户端和服务器端的tomcat 我的目标是: www.mydomain.com在加载javascript内容时呈现静态和SEO友好的index.html 在这个index.html的标题中,我加载了www.mydomain.com:8080/myapp/stuff.js stuff.js是用gwt编译的,并调用RootLayoutPanel.get().add(nice_panel),它将删除静态内容并显示动态小部件。它还调用servlet(服务器端代码) 问题:出于安全原因,浏览器不允许我加载www.mydomain.com:8080/myapp/stuff.js,因为它位于不同的端口上 错误尝试:我试图创建一个从“普通”apache web服务器目录到包含stuff.js的tomcat webapp的符号链接。我现在可以加载stuff.js了,因为它的url是:www.mydomain.com/mysymlink_to_tomcat/stuff.js。但是stuff.js不再能够再次调用服务器端的servlet,因为浏览器的安全规则(“XMLHttpRequest无法加载…origin…访问控制不允许使用Allow origin”) 我希望避免将index.html重定向到带有标题('location:')的tomcat的“疯狂”解决方案。这个解决方案可行,但有很多缺点(SEO…) 最好的方法是什么Gwt 链接端口80上的apache web服务器和端口8080上的tomcat webapp,gwt,tomcat,Gwt,Tomcat,在端口80上,我有普通的apache web服务器 在端口8080上,我有带有客户端和服务器端的tomcat 我的目标是: www.mydomain.com在加载javascript内容时呈现静态和SEO友好的index.html 在这个index.html的标题中,我加载了www.mydomain.com:8080/myapp/stuff.js stuff.js是用gwt编译的,并调用RootLayoutPanel.get().add(nice_panel),它将删除静态内容并显示动态小部件。
谢谢。我不确定这是否可以避免安全错误,但您可以尝试使用iframe。在apache上,tomcat有索引和iframe,JS在iframe中加载。不知道这是否有助于解决搜索引擎优化问题。我不确定这是否能避免安全错误,但您可以尝试使用iframe。在apache上,tomcat有索引和iframe,JS在iframe中加载。不知道这是否有助于解决搜索引擎优化问题。您基本上有两种解决方案:
- 使用两个源代码:使用GWT中的
链接器允许xsiframe
上的页面从:80
加载脚本(对于读者来说:这不是关于加载,而是关于脚本的功能)。 将以下内容添加到“gwt.xml”中::8080
<add-linker name='xsiframe' />
- 使用单一来源:使用Apache的
(或mod_proxy
)通过Apache代理Tomcat。没有人会使用mod_jk
,一切都会经过:8080
。请参阅将Tomcat与ApacheHTTPD和代理一起使用,网址为:80
当然还有抛弃HTTPD并用Tomcat提供一切服务的解决方案(最近的Java和Tomcat版本已经解决了它们的慢度问题)。基本上有两种解决方案:
- 使用两个源代码:使用GWT中的
链接器允许xsiframe
上的页面从:80
加载脚本(对于读者来说:这不是关于加载,而是关于脚本的功能)。 将以下内容添加到“gwt.xml”中::8080
<add-linker name='xsiframe' />
- 使用单一来源:使用Apache的
(或mod_proxy
)通过Apache代理Tomcat。没有人会使用mod_jk
,一切都会经过:8080
。请参阅将Tomcat与ApacheHTTPD和代理一起使用,网址为:80
当然,还有一种解决方案是抛弃HTTPD,用Tomcat为一切服务(最近的Java和Tomcat版本已经解决了它们的慢度问题)。最好的解决方案是在客户端调用请求Tomcat应用程序时,将apache上的端口80调用重定向到8080 在apache上安装mod_jk,并将其配置为在所需路径上装载上下文 示例:(edit/mods_enabled/jk.conf)
然后应该设置为工作,当出现包含myAppDir的url时,apache服务器将把调用重定向到tomcat,答案将从apache返回。最好的解决方案是在客户端调用请求tomcat应用程序时,将端口80调用重定向到apache上的8080 在apache上安装mod_jk,并将其配置为在所需路径上装载上下文 示例:(edit/mods_enabled/jk.conf)
然后您应该设置为工作,当出现包含myAppDir的url时,apache服务器将把调用重定向到tomcat,答案将从apache返回。使用tomcat将evertyhing移动到端口80?使用tomcat将evertyhing移动到端口80?谢谢Thomas。我喜欢“使用单一来源”的方法。我现在正努力做到这一点,并让你尽快知道。不幸的是,我有一个“500内部服务器错误”,我不知道如何摆脱它。完成它!“单一来源”最终效果良好。我必须考虑到:使一切顺利。非常感谢,谢谢你,托马斯。我喜欢“使用单一来源”的方法。我现在正努力做到这一点,并让你尽快知道。不幸的是,我有一个“500内部服务器错误”,我不知道如何摆脱它。完成它!“单一来源”最终效果良好。我必须考虑到:使一切顺利。非常感谢。谢谢你详细的回答。据我所知,我更喜欢使用Tomas Brower建议的mod_代理,因此我不必创建任何连接器,这对于不熟练的人来说不是一件容易的事情。谢谢你的详细回答。据我所知,我更喜欢使用Tomas Brower建议的mod_代理,因此我不必创建任何连接器,这对于不熟练的人来说不是一件容易的事情。
<VirtualHost *:80>
. Here is the rest of the
. of the config of
. the host
# Tomcat jk connector settings
JkMount /*.jsp ajp13_worker
JkMount /myAppDir/* ajp13_worker
JkMount /myAppDir* ajp13_worker
JKMount /manager* ajp13_worker
JkMount /manager/* ajp13_worker
</VirtualHost>
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Host name="localhost" appBase="webapps" unpackWARs="true"
autoDeploy="true" >
<Context path="/" docBase="/var/lib/tomcat7/webapps/myAppDir/"
debug="0" reloadable="true" />
<!-- please notes on logs down below -->
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="/var/lib/tomcat7/logs" prefix="tomcat_access_"
suffix=".log" pattern="common" resolveHosts="false" />
</Host>
worker.myapp2.port=8009
worker.myapp2.host=localhost
worker.myapp2.type=ajp13
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=ajp13_worker