mod_rewrite proxy targets must be allowed first

I was trying to install a proxy redirect on my server in order to bypass the same origin policy for GWT Ajax requests. We are not using the default java servlets but a perl backend.

Therefore I wanted to rewrite a path „http://myhost/mk/*“ to the host where the actual request endpoint was „http://targethost/$1“.

The Idea was to use mod_rewrite and first of all it had to be enabled. Additionally mod_proxy is used if proxy rewrites are involved. On debian this works using:

$ a2enmod rewrite; a2enmod proxy_http

The vhost config looks like this:

<VirtualHost myhost:80>
ServerName gt.myhost

RewriteEngine On
RewriteLogLevel 3
RewriteLog "/var/log/apache2/rewrite.log"
RewriteRule ^/mk/(.*) http://targethost/$1 [P]

# Allow the proxy to targethost ...
<Proxy http://targethost/*&gt;
Order deny,allow
Allow from all
</Proxy>

DocumentRoot /var/www/gt
</VirtualHost>

Important is the Proxy element here, which was not obvious to me from the start. I missed it and just got the following output in rewrite.log and error.log when trying to call http://gt.myhost/mk/login.

(2) rewrite '/mk/login' -> 'http://targethost/login'
(2) forcing proxy-throughput with http://targethost/login
(1) go-ahead with proxy request proxy:http://targethost/login [OK]

[error] client denied by server configuration: proxy:http://targethost/login

So, make sure you got the Proxy Element right, too, when using mod_rewrite and [P].

References:

mod_rewrite manual
apache rewrite guide
Ubuntu mod_rewrite Problem

Advertisements

GWT 2.2.0 and EXT GWT no success

I tried to use EXT GWT with GWT 2.2.0 and had no success … no one told me I couldn’t do that.

Afterwards I found out there really is no accurate version requirement noted for EXT GWT. „GWT 1.5 or above is required“ from the helpcenter was not very helpful here.

What I started with and wanted to use was:

<gwtVersion>2.2.0</gwtVersion>
<gwtMavenVersion>2.2.0</gwtMavenVersion>
<gwtLogVersion>3.1.0</gwtLogVersion>
<ginVersion>1.5</ginVersion>
<!-- My Wish: From the Sencha Roadmap, not yet released: 3.0 -->
<extGwtVersion>2.2.0</extGwtVersion>

(maven Dependency configuration)

Which resulted in compilation errors:

$ mvn -Dmaven.test.skip package
java.lang.IncompatibleClassChangeError: Found interface com.google.gwt.core.ext.typeinfo.JClassType, but class was expected at com.extjs.gxt.ui.rebind.core. TemplatesGenerator$SourceGenerator.validateType(TemplatesGenerator.java:142) at com.extjs.gxt.ui.rebind.core. TemplatesGenerator$SourceGenerator.generate(TemplatesGenerator.java:97) at com.extjs.gxt.ui.rebind.core. TemplatesGenerator.generate(TemplatesGenerator.java:56)
...

I found some board entries about that. So I had to downgrade GWT and a couple of libraries like the maven gwt plugin, gin and gwt log. Thanks to maven this was less horrible than it could have been.

<gwtVersion>2.1.1</gwtVersion>
<gwtMavenVersion>2.1.0-1</gwtMavenVersion>
<gwtLogVersion>3.0.2</gwtLogVersion>
<ginVersion>1.0</ginVersion>
<extGwtVersion>2.2.0</extGwtVersion>
<warPluginVersion>2.1.1</warPluginVersion>

So, dear vendors, please make more accurate requirement definitions.

GWT – Google-Web-Toolkit, Einführung und Meinung dazu

Ich möchte hier kurz auf einen Artikel eines Kollegen über GWT hinweisen. Dieser befasst sich sehr oberflächlich mit GWT, gibt aber vielleicht eine Motivation sich, ein wenig näher damit zu befassen.

http://blog.seibert-media.net/2010/12/08/gwt-evolution-der-internet-anwendung/

Ich finde es auch sehr angenehm mit GWT zu arbeiten.

Man kommt kaum noch in Berührung mit den syntaktischen Unzulänglichkeiten von Javaskript und kann auf angenehme Weise mächtige und performante “RIA” Anwendungen entwickeln.

Ein Punkt den ich persönlich jedoch wichtig finde ist, dass sich GWT am besten eignet, wenn man tatsächlich Anwendungen entwickelt. Das heißt, anstatt zu versuchen klassische voll designte und dynamische Webseiten damit zu bauen.
Die mitgebrachten Widgets und Layouts kommen nun einmal aus der AWT/Swing Ecke und gliedern sich auch am natürlichsten in solch eine Art Anwendung ein.
Eine voll designte Anwendung, in der man auf das look and feel von Standardelementen zwecks Individualismus verzichtet, ist zwar möglich, bedeutet hier aber etwas mehr Aufwand als bei klassisch Server-Seitig erzeugten HTML Seiten.

Dass solche eine GWT Anwendung dennoch gut aussehen kann, beweist meiner Meinung nach der PostgreSQL GWT Client aus dem GWT Showcase http://demo.teampostgresql.com/

Sehr schön sieht natürlich auch https://www.twentyfeet.com/app/ aus, auch wenn es hier viele klassische Webseiten Elemente gibt, deren Umsetzung aufwändiger ist als bei Server generierten Seiten.