On Mon, Oct 7, 2019 at 2:37 PM André Warnier (tomcat) <a...@ice-sa.com> wrote:
> On 07.10.2019 13:45, Mark Thomas wrote: > > On 07/10/2019 12:22, Martin Knoblauch wrote: > >> Dear fellow Tomcat users, > >> > >> recently we migrated our application from Tomcat7 to Tomcat9. Most > things > >> work great so far, but we observed on issue. Basically serving static > pages > >> has stopped for us. > >> > >> Our setup is Tomcat (7.0.62 or 9.0.12) behind Apache HTTPD (2.4.41 > using > >> mod_jk 1.2.46). Yes, 9.0.12 is not recent, but we are forced to that > >> version. > >> > >> The mod_jk configuration basically looks like: > >> > >> <IfModule !mod_jk.c> > >> LoadModule jk_module modules/mod_jk.so > >> > >> JkWorkersFile "conf/cb2/workers.properties" > >> JkShmFile "logs/jk-runtime-status" > >> JkLogFile "logs/mod_jk.log" > >> JkLogLevel info > >> JkWatchdogInterval 60 > >> </IfModule> > >> > >> And then later inside a virtual host: > >> > >> # > >> # CB2 - Portal > >> # > >> # Mount the "/cb2" application to worker "cb2" > >> # > >> JkMount /cb2/* cb2 > >> # > >> # Unmount "/cb2/docs" from worker "cb2" to allow static content > >> # beeing served by apache. Same for "/cb2/cgi-bin" > >> # > >> JkUnMount /cb2/docs/* cb2 > >> > >> So we JkUnMount the "/cb2/docs" directory from the application base in > >> order to server the content directly from Apache. "docs" itself is a > >> symbolic link pointing outside the application base. > >> > >> With TC7, we observe the following in the apache access_log: > >> > >> [07/Oct/2019:12:30:47 +0200] [2 ms] 160.46.219.110 - "POST /cb2/docs > >> HTTP/1.1" s:302 l:- S:TLSv1.2 C:ECDHE-RSA-AES256-GCM-SHA384 > >> [07/Oct/2019:12:30:47 +0200] [20 ms] 160.46.219.110 - "GET /cb2/docs/ > >> HTTP/1.1" s:200 l:6367 S:TLSv1.2 C:ECDHE-RSA-AES256-GCM-SHA384 > >> > >> So the POST from the application is redirected to the static content, > which > >> is served OK. > >> > >> With TC9 we see: > >> > >> [05/Oct/2019:02:58:13 +0200] [0 ms] #160.46.219.110# - "GET /docs > HTTP/1.1" > >> s:404 l:196 S:TLSv1.2 C:ECDHE-RSA-AES256-GCM-SHA384 > > > > Where and how is the redirect generated? > > > >> As said, the major difference between the setups is TC7 vs. TC9. Any > ideas > >> for me to follow? I did not find anything in the migration 7->8 or 8->9 > >> guides. > > > > I can't think of anything and a review of the migration guides doesn't > > bring anything to mind. I'd be looking more at configuration differences > > between the old and new systems at this point. > > > > Mark > > > > The URLs appear different : > > - the first case shows a URL of "/cb2/docs" (with some kind of redirect > from POST to a > GET). According to the mod_jk configuration, this is NOT being proxied to > Tomcat. Assuming > thus that the httpd DOCUMENT_ROOT is set to (e.g.) /var/www/docs, it would > mean that the > file being served is some directory list (or index document) located below > /var/www/docs/cb2/docs/ (on the httpd host). > > Dear Andre, unfortunately this was cut/paste foul-up on my side :-( Martin > - the second example shows a URL of "/docs", which according to the mod_jk > configuration > above is also NOT being proxied to Tomcat; thus Apache httpd attempts to > serve it locally. > But that URL does not match any Apache-httpd-local file (because > /var/www/docs/docs does > not exist), and thus results in a 404 status "not found". > > To verify this is quite simple : > In the URL bar of a browser, enter the URL "http://yourservername/cb2/docs" > directly, > replacing "yourservername" alernatively with the one for tomcat 7 and the > one for tomcat9. > The result should be the same, because this URL is not being proxied to > Tomcat, and is > served locally by httpd. > > (On the other hand, the URL "/docs" should give "404 not found" in both > cases too) > > What I suspect is : > > The above URL "/cb2/docs" is not being entered in the browser URL bar. > Instead, the link > to that URL occurs in a html page previously returned by Tomcat, and the > user just clicks > on the link. > Then maybe it is that previous page returned by Tomcat, that is different > between Tomcat 7 > and Tomcat 9. > (That could be consistent with "the major difference between the setups is > TC7 vs. TC9."). > > Further speculation under incomplete information (I love this) : could it > be that under > Tomcat 7, your application is deployed under ../webapps/cb2, while under > tomcat 9, you > have relocated it to ../webapps/ROOT ? > > Nope. Application is at ".../webapps/cb2" Thanks Martin -- ------------------------------------------------------ Martin Knoblauch email: k n o b i AT knobisoft DOT de www: http://www.knobisoft.de