]
Florian Morgan commented on MODCLUSTER-723:
-------------------------------------------
For the record, I've opened a case in [
this topic. Luckily I have access to this support.
So far we have:
Used a RewriteRule redirect to overcome the redirect issue (I previously tried with a
simple not-Rewrite "Redirect" rule without success). It works but there are
other problems now:
* Redirects using TLS (HTTPS) don't work perfectly, we have to dig into this, this
has not been investigated so far.
* There are stability issues, it _seems_ that mod_cluster handles some of the HTTP non-WS
request as WS requests, and that triggers random HTTP 500 issues. This is being
investigated at the moment.
302 redirect not being forwarded when websockets are enabled
------------------------------------------------------------
Key: MODCLUSTER-723
URL:
https://issues.redhat.com/browse/MODCLUSTER-723
Project: mod_cluster
Issue Type: Bug
Components: Native (httpd modules)
Affects Versions: 1.3.14.Final
Reporter: Florian Morgan
Assignee: Radoslav Husar
Priority: Major
I'm having an issue with mod_cluster with JBoss EWS and JBoss EAP.
I have a JBoss EAP 7.1.6 server configured with JBoss EWS as a reverse proxy with
mod_cluster.
Normally everything works fine, I have no issue with this configuration.
When I add *WSUpgradeHeader NONE* I have a weird behaviour of EWS regarding the
forwarding of HTTP redirects.
The normal behaviour is the following:
# The client submit a request to this URL: [
http://ews-host:8080/arche]
# EWS forwards the request to JBoss EAP
# EAP replies with a 302 redirect
to [http://ews-host:8080/arche/|http://ews-host:8080/arche] (see the added */* at the end
of the request)
# EWS forwards the 302 redirect to the client.
# The client follows the redirect
to [http://ews-host:8080/arche/|http://ews-host:8080/arche]
# ... [The rest is fine and not significant to my problem]
When I add *WSUpgradeHeader NONE* the EWS no longer forwards the 302 redirect from the
EAP to the client, instead the redirect is *followed* by EWS to EAP and the redirected
content is forwarded to the client:
# The client submit a request to this URL: [
http://ews-host:8080/arche]
# EWS forwards the request to JBoss EAP
# EAP replies with a 302 redirect
to [http://ews-host:8080/arche/|http://ews-host:8080/arche] (see the added */* at the end
of the request)
# *(*) EWS follows the redirect and issue a request to JBoss EAP
to [http://ews-host:8080/arche/|http://ews-host:8080/arche]*
# *EAP replies with the content from /arche/*
# *EWS replies the redirected content (from 5.) to the client.*
(*) : I have no proof that EWS actually performs this request, maybe it comes from a
cache. But I do this hypthesis to simplify the problem.
I highlighted the changes in bold.
The problem here is that the URL stays [http://ews-host:8080/arche] instead of
being [http://ews-host:8080/arche/|http://ews-host:8080/arche].
It breaks all relative URLs from web pages.
Curiously, when the client issue 2 consecutive request, the first one follows the
incorrect behaviour, but the second one behaves normally.
It seems that EWS "remembers" the client host/ip and changes it behaviour to
the correct behaviour when it sees it again.
If I wait enough time, the incorrect behaviour is seen again.
Finally when I issue the requests from the same host (client=ews-host), the incorrect
behaviour is always seen. In that case EWS never forwards the redirect correctly.
I tried to work around using a *Redirect "/arche" "/arche/"*
configuration, but it doesn't change anything.
I can provide cURL commands to reproduce the problem if needed.
Do you know how can I have the correct behavour every time?
Thanks for the help.
PS : It seems to be linked to this
issue https://issues.redhat.com/browse/MODCLUSTER-722 but the case is not identical. Maybe
the cause of the problem is the same.