我在亚马逊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;在这篇文章中
答案 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>