I went over the documentation multiple times and the light bulb finally went on after everyone's input. Most of the mod_jk configs were built by the Coldfusion web server config tool so that's why it's so cluttered. I made the configuration work by putting the below in httpd.conf:
<IfModule mod_jk.c> JkWorkersFile /apps/httpd/conf.d/modjk/workers.properties JkShmFile /weblogs/mod_jk.jk_shm </IfModule> Then I stripped out everything from the virtual host config besides the docroot and log configs like below which managed to start getting me responses. I also found there were major environment issues compounding my experience because the F5 wasn't always sending traffic to this apache host which is why I was banging my head most of the time trying to figure out why I wasn't seeing anything in my logs. Now that my apache config is good I need to figure out why coldfusion is returning a 302 for GET /. <IfModule mod_jk.c> JkMountFile /apps/httpd/conf.d/modjk/app1.uriworkermap.properties # Where to put jk logs JkLogFile /weblogs/mod_jk.app1.dev5.log # custom environment variables JkEnvVar REDIRECT_URL JkEnvVar REDIRECT_REMOTE_HOST JkEnvVar REDIRECT_PATH JkEnvVar REDIRECT_QUERY_STRING JkEnvVar REDIRECT_HTTP_ACCEPT JkEnvVar REDIRECT_HTTP_USER_AGENT JkEnvVar REDIRECT_REMOTE_ADDR JkEnvVar REDIRECT_SERVER_NAME JkEnvVar REDIRECT_SERVER_PORT JkEnvVar REDIRECT_SERVER_SOFTWARE # Where to put jk shared memory #JkShmFile /weblogs/app1.dev5.jk_shm # Set the jk log level [debug/error/info] JkLogLevel debug # Select the timestamp log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " JkOptions +ForwardDirectories AddHandler jakarta-servlet .cfm .cfml .cfc .cfr .cfswf DirectoryIndex index.cfm <Files ~ ".hbmxml$"> Order allow,deny Deny from all </Files> </IfModule> On Mon, Mar 3, 2014 at 1:57 PM, André Warnier <a...@ice-sa.com> wrote: > Doug Strick wrote: > >> Hello, >> >> I'm currently working on a project where we're migrating from Adobe >> Coldfusion 8 to CF 10. Adobe CF10 now uses tomcat as the underlying >> server >> and mod_jk is the standard connector used. On our test environment we >> have >> a single apache httpd instance serving multiple domains with each going to >> a different CF instance. We really only want specific workers enabled for >> specific virtual hosts like below. >> >> test1.abc.com --> HTTPD test1 VirtualHost --> CF Test1 >> test2.abc.com --> HTTPD test2 VirtualHost --> CF Test2 >> test3.abc.com --> HTTPD test3 VirtualHost --> CF Test3 >> >> Each CF instance is on a separate host. A developer has managed to get a >> config working on their local desktop where CF10 runs under windows and >> apache runs under a linux VM. The real dev environment is a lot more >> complicated with multiple virtual hosts. CF is the only one where we're >> going to use mod_jk (CF 8 used mod_jrun22) so this is the first time using >> mod_jk in our environment. Using the below config I keep getting >> "JkWorkersFile cannot occur within <VirtualHost> section". Does anyone >> have any suggestions as to what I need to do to make this work? >> > > See http://tomcat.apache.org/connectors-doc/reference/apache.html > > quote > > JkWorkersFile > > The name of a worker file for the Tomcat servlet containers. > This directive is only allowed once. It must be put into the global part > of the configuration. > [...] > > unquote > > And the same for the "JkShmFile" directive. > > The "global part of the configuration" refers to the main (or default) > Apache httpd configuration file (apache2.conf or httpd.conf e.g.), > *outside* of any <VirtualHost> section. > > The "JkWorkersFile" file defines *all* the "workers" (in mod_jk parlance, > a "worker" is usually "one back-end Tomcat instance"). So in your case, you > would have 3 workers (Test1, Test2 and Test3). > > Then inside of each <VirtualHost> section, you would use "JkMount" > directives, to indicate *for this VirtualHost* which URI's should be > proxied to which of the known workers. > For example, > in <VirtualHost #1> > JkMount /myapp/ Test1 > JkMount /myapp/* Test1 > > in <VirtualHost #2> > JkMount /myapp/ Test2 > JkMount /myapp/* Test2 > > in <VirtualHost #3> > JkMount /myapp/ Test3 > JkMount /myapp/* Test3 > > > Also, it does not really make much sense to have both "JkMount" directives > directly in your configuration, *and* a "JkMountFile" directive. Usually, > one uses the one or the other. It is less confusing, because both specify > lists of URI's which should be/should not be proxied to Tomcat. > > Another configuration directive which should only be there once, and in > the main httpd configuration section (not in <VirtualHost>) is > > LoadModule jk_module /apps/httpd/modules/mod_jk.so > It is probably ignored when it occurs in a VirtualHost section. > See http://httpd.apache.org/docs/2.2/mod/mod_so.html#loadmodule > > There are some other things which I find a bit strange (or unclear or > redundant) in the configuration below, such as the conjunction of : > > > DirectoryIndex index.cfm index.html index.html.var > ... > > > JkMount / cfusion > > JkMount /* cfusion > ... > > > AddHandler jakarta-servlet .cfm .cfml .cfc .cfr .cfswf > > DirectoryIndex index.cfm > > All in all, it looks a bit like an accumulation of miscellaneous > overlapping and contradictory instructions, put together by chance more > than by a good understanding of what each one really achieves and in what > order they are evaluated. > For example : > > > > JkMount / cfusion > > JkMount /* cfusion > These directives will result in Apache httpd, in effect, proxying *all* > requests to the Tomcat worker named "cfusion", leaving none to be handled > by Apache httpd itself. > But then, these directives : > > DirectoryIndex index.cfm index.html index.html.var > > > AddHandler jakarta-servlet .cfm .cfml .cfc .cfr .cfswf > > DirectoryIndex index.cfm > > are totaly redundant, even among themselves. > > This is > >> currently apache 2.2.26 compiled from source and mod_jk 1.2.37 compiled >> from source as well. >> >> >> --------------------VirtualHost Example-------------------------------- >> <VirtualHost 192.168.253.61:80 <http://192.168.253.61/>> >> >> DocumentRoot /web/app1.dev5.abc.com/scms >> ServerName app1.dev5.abc.com >> ServerAlias origin-app1.dev5.abc.com >> alias /shared-static /web/app1.dev5.abc.com/shared-static >> ErrorLog "|/apps/httpd/bin/rotatelogs >> /weblogs/app1.dev5.abc-error.%Y%m%d 86400 -480" >> CustomLog "|/apps/httpd/bin/rotatelogs >> /weblogs/app1.dev5.abc-access.%Y%m%d 86400 -480" combined >> env=!keepaliveuri >> DirectoryIndex index.cfm index.html index.html.var >> #AddDefaultCharset UTF-8 >> >> LoadModule jk_module /apps/httpd/modules/mod_jk.so >> >> <IfModule mod_jk.c> >> JkMount / cfusion >> JkMount /* cfusion >> # Where to find workers.properties >> JkWorkersFile /apps/httpd/conf.d/modjk/app1. >> dev5.workers.properties >> JkMountFile >> /apps/httpd/conf.d/modjk/app1.dev5.uriworkermap.properties >> # Where to put jk logs >> JkLogFile /weblogs/mod_jk.app1.dev5.log >> # custom environment variables >> JkEnvVar REDIRECT_URL >> JkEnvVar REDIRECT_REMOTE_HOST >> JkEnvVar REDIRECT_PATH >> JkEnvVar REDIRECT_QUERY_STRING >> JkEnvVar REDIRECT_HTTP_ACCEPT >> JkEnvVar REDIRECT_HTTP_USER_AGENT >> JkEnvVar REDIRECT_REMOTE_ADDR >> JkEnvVar REDIRECT_SERVER_NAME >> JkEnvVar REDIRECT_SERVER_PORT >> JkEnvVar REDIRECT_SERVER_SOFTWARE >> # Where to put jk shared memory >> JkShmFile /weblogs/app1.dev5.jk_shm >> # Set the jk log level [debug/error/info] >> JkLogLevel info >> # Select the timestamp log format >> JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " >> JkOptions +ForwardDirectories >> AddHandler jakarta-servlet .cfm .cfml .cfc .cfr .cfswf >> DirectoryIndex index.cfm >> <Files ~ ".hbmxml$"> >> Order allow,deny >> Deny from all >> </Files> >> </IfModule> >> </VirtualHost> >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > >