我需要将反向代理发送回运行grails应用程序的tomcat服务器。 我一直看到像这样的反向代理示例:
ProxyRequests Off
ProxyPass / http://localhost:8080/appname/
ProxyPassReverse / http://localhost:8080/appname/
ProxyPreserveHost On
在我的所有应用程序中,当我这样做时,页面出现,我的静态加载如下: 的 /应用程序的名字/静态/ [jsapp.js] [mycss.css]
所以因此造型和功能都会丢失。所以我的解决方法就是这样做:
ProxyRequests Off
ProxyPass /appname/ http://localhost:8080/appname/
ProxyPass / http://localhost:8080/appname/
ProxyPassReverse /appname/ http://localhost:8080/appname/
ProxyPassReverse / http://localhost:8080/appname/
ProxyPreserveHost On
我猜是反向反向代理;无论哪种方式,它似乎hacky和(我认为)一个副作用;它创建了包含tomcat上下文的URL:http://servername.com/appname/user/username而不是http://servername.com/user/username。如果可能的话,我会更喜欢后者,而不会失去造型。
注意:
对于我需要采取哪些不同的做法?
感谢。
答案 0 :(得分:1)
有几种方法,如何解决这种情况。我在TomCat中使用vhosts,所以我删除了URL中的应用程序名称。将其添加到server.xml
<Host name="myapp.com" appBase="myappbase" unpackWARs="true" autoDeploy="false">
<Alias>www.myapp.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="myapp_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/thumbnails" docBase="/var/www/myapp/thumbnails" reloadable="true">
</Host>
$ TOMCAT_HOME中的创建一个目录“myappbase”,您将应用程序WAR上传为ROOT.war。您的申请可通过http://myapp.com:8080/获得。
您的代理配置非常简单;-)您还可以在1个TomCat中制作更多虚拟主机。
在上述配置中,也是一个目录别名(缩略图),可以通过http://myapp.com/thumbnails/访问,您可以通过以下方式在GSP中使用它:
${ resource( dir: 'thumbnails', file: 'image01.png' ) }
最后一点,可以帮助您在UrlMappings.groovy中设置“静态”目录。将URL转换为控制器时会忽略这些目录,反之亦然:
static excludes = [
'/css*', '/js*', '/thumbnails*'
]