I'm using Apache HTTPD in front of Apache Tomcat with the following virtual host:
$ cat /etc/apache2/sites-enabled/onlinetaskboarddotcom
<VirtualHost *:80>
ServerAdmin comented@out.com
ServerName www.onlinetaskboard.com
ServerAlias onlinetaskboard.com
DocumentRoot /home/ubuntu/www/apache/onlinetaskboarddotcom
ProxyPass / http://www.onlinetaskboard.com:8080/
ProxyPassReverse / http://www.onlinetaskboard.com:8080/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/ubuntu/www/apache/onlinetaskboarddotcom/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
The URLs without www
subdomain like onlinetaskboard.com/login
and onlinetaskboard.com/someOtherValidPage
work fine, however once I include the www
subdomain like www.onlinetaskboard.com
, then I get a 404 error in some browsers like Chrome.
Here are the request/response headers which I observed in Chrome.
With www
subdomain:
Request: Request URL:http://www.onlinetaskboard.com/ Request Method:GET Status Code:404 Not Found Request headers: Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8 Connection:keep-alive Cookie:JSESSIONID=DE44F60835D23E6AB3CC2A2E8B9D6279 Host:www.onlinetaskboard.com User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/28.0.1500.71 Chrome/28.0.1500.71 Safari/537.36 Response headers: Connection:Keep-Alive Content-Encoding:gzip Content-Length:377 Content-Type:text/html;charset=ISO-8859-1 Date:Thu, 14 Nov 2013 23:39:24 GMT Keep-Alive:timeout=5, max=99 Server:Apache-Coyote/1.1 Vary:Accept-Encoding X-Pad:avoid browser bug
And without the www
subdomain:
Request: Request URL:http://onlinetaskboard.com/ Request Method:GET Status Code:302 Found Request Headers: Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8 Cache-Control:max-age=0 Connection:keep-alive Cookie:JSESSIONID=36D1DED5A3F7B5E185FE5D5EDD4457FC Host:onlinetaskboard.com User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/28.0.1500.71 Chrome/28.0.1500.71 Safari/537.36 Response headers: Connection:Keep-Alive Content-Length:0 Date:Fri, 15 Nov 2013 00:04:33 GMT Keep-Alive:timeout=5, max=100 Location:http://onlinetaskboard.com/login Server:Apache-Coyote/1.1
How is this caused and how can I solve it?
Best Answer
Is there something validating the URL on the other side? What happens if you just go to ip.address:8080 do you get a 404? I am just wondering if it is something tomcat could be doing.
Also, if you add
"ProxyPreserveHost On"
this will keep the request header so you can pass it to tomcat.
Also, why do you have all of this? cgi-bin and such:
Options FollowSymLinks AllowOverride None