在tomcat前面的apache和重定向不能正常工作

时间:2016-07-05 22:07:13

标签: apache .htaccess tomcat grails

我在亚马逊linux服务器上运行了一个grails应用程序,我有一个tomcat并在前面添加了一个apache,以便将domain.com重定向到www.domain.com。经过谷歌搜索后,我可以使它工作,但后来我意识到,当我tiped domain.com时,它被重定向到www.domain.com//(最后两个斜线)。再次谷歌搜索我可以使用位于/etc/httpd/conf.d中的tomcat.conf文件中的以下配置:

<VirtualHost *:80>
   ServerName www.domain.com
   ServerAlias domain.com
   ProxyRequests Off
   ProxyPreserveHost On

   ErrorLog /var/log/httpd/tomcat.error.log
   CustomLog /var/log/httpd/tomcat.log combined

   <Proxy *>
           Order deny,allow
           Allow from all
   </Proxy>

   ProxyPass / ajp://localhost:8009/
   ProxyPassReverse / ajp://localhost:8009/
   RewriteEngine On
   RewriteCond %{HTTP_HOST} !^www\. [NC]
   RewriteRule ^/(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>

问题是,现在有时一切都按预期工作,但有时当我去domain.com时,我会得到一个下载框,要求下载一个DMS文件,有时它可以工作,但显示两个斜线,它也发生了当我进入domain.com时,它被转换为www.www.domain.com(两个www),因此不确定它有时会使这项工作变好,有时也不会。

查看tomcat日志,我可以看到这个,我认为它可能是相关的:

Jul 05, 2016 11:02:20 PM org.apache.coyote.AbstractProcessor     setErrorState
INFO: An error occurred in processing while on a non-container     thread. The connection will be closed immediately
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)

编辑2:我删除了从domain.com重定向到www.domain.com的行,我仍然遇到这个问题我随机要求下载文件而不是显示该网站,我可以在JS控制台中看到下一条消息: 资源被解释为文档但使用MIME类型application / octet-stream传输:&#34; domain.com&#34;

编辑:只是为了澄清,我更改了我的域名以获取通用域名&#39;在这篇文章中

1 个答案:

答案 0 :(得分:0)

RewriteEngine将domain.com重定向到www.domain.com有点过分。这就是我用于我的tomcat安装...你的ajp线路也很好:

<VirtualHost *:80>
    ServerName domain.com
    Redirect / http://www.domain.com/
</VirtualHost>

<VirtualHost *:80>
    ServerName www.domain.com
    ProxyPass / http://www.domain.com:8080/ 
    ProxyPassReverse / http://www.domain.com:8080/ 
    ProxyPreserveHost On
    <Proxy *> 
        Order deny,allow 
        Allow from all 
    </Proxy> 
</VirtualHost>