Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

Can't figure out Apache VirtualHosts + Tomcat + ReverseProxy + Rewrite

rave8151rave8151 Posts: 2Member
Hi all, I have a problem that I can't seem to find info on anywhere!

[B]CURRENT SETUP:[/B]
I'm running Apache 1.3 on Server_1 which directs all requests with JkMount to Server_2 which runs a home grown CMS application

('cmsapp') and a related application ('app1') on tomcat 5.

The CMS application services 20+ domains, and the Apache server uses VirtualHosts for each of them. e.g:

[CODE]
ServerAdmin webmaster@domain1.com
DocumentRoot /usr/local/www/data/vhosts
ServerName domain1.com
ServerAlias www.domain1.com

ErrorLog /usr/var/log/vhosts/www.domain1.com-error_log
CustomLog /usr/var/log/vhosts/www.domain1.com-access_log combined

JkMount /cmsapp/* worker1
JkMount /app1/* worker1


RewriteEngine On
RewriteBase /
RewriteRule ^$ /cmsapp/homepage.html [L]
RewriteRule ^([a-zA-Z0-9_-]{1,30})$ /cmsapp/$1.do.html [R]

[/CODE]

The RewriteRules (as I understand them) allow us to direct to a different default starting page for each domain name, as

specified in the VirtualHost settings.

This all works fine and there have been no real problems with this setup for over 2 years.

[B]PROBLEM:[/B]

An increase in the number of domains being managed by the CMS and the rise in traffic means our little tomcat server can't handle

it fast enough! I really want to upgrade to Apache 2.2 and get rid of the JkMount setup and implement a reverse proxy so I can

set up a cache for the Tomcat applications. This, I think, will alleviate the problems.

But try as I might I can't get the setup to work! Maybe my VirtualHost settings are wrong for Apache2.2, maybe I don't know

enough about Regex, but I think the problem is my lack of experience with mod_rewrite and mod_proxy.

Below are the best settings I have found so far for the domain shown above. This resolves requests for specific pages and

displays them properly, but the rewrite rules (which work for Apache 1.3) don't get executed. So instead of rewriting the request

for 'http://www.domain1.com' to the default homepage for that domain, it just goes to the Tomcat default homepage,

"$CATALINA_HOME/webapps/ROOT/index.jsp":

[CODE]
ServerAdmin webmaster@domain1.com
DocumentRoot /usr/local/www/data/vhosts
ServerName domain1.com
ServerAlias www.domain1.com

ErrorLog /usr/var/log/vhosts/www.domain1.com-error_log
CustomLog /usr/var/log/vhosts/www.domain1.com-access_log combined

ProxyRequests Off

ProxyPass / http://1.2.3.111:8180/ #Tomcat Server
ProxyPassReverse / http://1.2.3.111:8180/


RewriteEngine On
RewriteBase /
RewriteRule ^$ /cmsapp/homepage.html [L]
RewriteRule ^([a-zA-Z0-9_-]{1,30})$ /cmsapp/$1.do.html[R]


[/CODE]

I think the issue is something to do with the module order, but I can't figure out a solution. I read somewhere that one can

leave out the 'ProxyPass' directive and just use 'RewriteRule' to send requests through a compiled-in mod_proxy. I tried setting

that up but then I couldn't access any pages at all, with every request returning an HTTP 403 error message.

Does anyone know how I can get the old RewriteRule directives to work and fix this problem?

Comments

  • rave8151rave8151 Posts: 2Member
    For anyone experiencing similar problems, here are the VirtualHost settings that I used to fix my problems, provided by 'richardk' of

    [code]
    ServerName domain1.com
    ServerAlias www.domain1.com
    ServerAdmin webmaster@domain1.com

    ErrorLog /usr/var/log/vhosts/www.domain1.com-error_log
    CustomLog /usr/var/log/vhosts/www.domain1.com-access_log combined

    RewriteEngine On

    RewriteRule ^/$ /cmsapp/homepage.html [PT,L]
    RewriteRule ^/([a-z0-9_-]{1,30})$ /cmsapp/$1.do.html [NC,R=301,L]

    ProxyRequests Off

    ProxyPass / http://1.2.3.111:8180/ #Tomcat Server
    ProxyPassReverse / http://1.2.3.111:8180/
    [/code]

    : Hi all, I have a problem that I can't seem to find info on anywhere!
    :
    : [B]CURRENT SETUP:[/B]
    : I'm running Apache 1.3 on Server_1 which directs all requests with
    : JkMount to Server_2 which runs a home grown CMS application
    :
    : ('cmsapp') and a related application ('app1') on tomcat 5.
    :
    : The CMS application services 20+ domains, and the Apache server uses
    : VirtualHosts for each of them. e.g:
    :
    : [CODE]
    : ServerAdmin webmaster@domain1.com
    : DocumentRoot /usr/local/www/data/vhosts
    : ServerName domain1.com
    : ServerAlias www.domain1.com
    :
    : ErrorLog /usr/var/log/vhosts/www.domain1.com-error_log
    : CustomLog /usr/var/log/vhosts/www.domain1.com-access_log combined
    :
    : JkMount /cmsapp/* worker1
    : JkMount /app1/* worker1
    :
    :
    : RewriteEngine On
    : RewriteBase /
    : RewriteRule ^$ /cmsapp/homepage.html [L]
    : RewriteRule ^([a-zA-Z0-9_-]{1,30})$ /cmsapp/$1.do.html [R]
    :
    : [/CODE]
    :
    : The RewriteRules (as I understand them) allow us to direct to a
    : different default starting page for each domain name, as
    :
    : specified in the VirtualHost settings.
    :
    : This all works fine and there have been no real problems with this
    : setup for over 2 years.
    :
    : [B]PROBLEM:[/B]
    :
    : An increase in the number of domains being managed by the CMS and
    : the rise in traffic means our little tomcat server can't handle
    :
    : it fast enough! I really want to upgrade to Apache 2.2 and get rid
    : of the JkMount setup and implement a reverse proxy so I can
    :
    : set up a cache for the Tomcat applications. This, I think, will
    : alleviate the problems.
    :
    : But try as I might I can't get the setup to work! Maybe my
    : VirtualHost settings are wrong for Apache2.2, maybe I don't know
    :
    : enough about Regex, but I think the problem is my lack of experience
    : with mod_rewrite and mod_proxy.
    :
    : Below are the best settings I have found so far for the domain shown
    : above. This resolves requests for specific pages and
    :
    : displays them properly, but the rewrite rules (which work for Apache
    : 1.3) don't get executed. So instead of rewriting the request
    :
    : for 'http://www.domain1.com' to the default homepage for that
    : domain, it just goes to the Tomcat default homepage,
    :
    : "$CATALINA_HOME/webapps/ROOT/index.jsp":
    :
    : [CODE]
    : ServerAdmin webmaster@domain1.com
    : DocumentRoot /usr/local/www/data/vhosts
    : ServerName domain1.com
    : ServerAlias www.domain1.com
    :
    : ErrorLog /usr/var/log/vhosts/www.domain1.com-error_log
    : CustomLog /usr/var/log/vhosts/www.domain1.com-access_log combined
    :
    : ProxyRequests Off
    :
    : ProxyPass / http://1.2.3.111:8180/ #Tomcat Server
    : ProxyPassReverse / http://1.2.3.111:8180/
    :
    :
    : RewriteEngine On
    : RewriteBase /
    : RewriteRule ^$ /cmsapp/homepage.html [L]
    : RewriteRule ^([a-zA-Z0-9_-]{1,30})$ /cmsapp/$1.do.html[R]
    :
    :
    : [/CODE]
    :
    : I think the issue is something to do with the module order, but I
    : can't figure out a solution. I read somewhere that one can
    :
    : leave out the 'ProxyPass' directive and just use 'RewriteRule' to
    : send requests through a compiled-in mod_proxy. I tried setting
    :
    : that up but then I couldn't access any pages at all, with every
    : request returning an HTTP 403 error message.
    :
    : Does anyone know how I can get the old RewriteRule directives to
    : work and fix this problem?


Sign In or Register to comment.