RE: [External] Re: [users@httpd] Apache 2.4.7 - How to parse the host and port and send the request to that host and port

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The URL should look like http://server:port/WebZ/...

 

Given the request:

GET /WebZ/MEdit?sessionid=server09.prod-1234-kgv44z4b-pl2l93:editsessionid=2:catpage=html/corc/catalogue.html:entitymytemplateName=marc?sessionid=server09.prod-1234-kgv44z4b-pl2l93 HTTP/1.1

 

The QUERY_STRING contained: /WebZ/MEdit

So the regular _expression_ never found the sessionid.

To get past the problem of not being able to parse beyond the ‘?’, I tried replacing the ‘?’ with the text {QMRep} – including the curly braces.

This worked until a request contained more than one ‘?’.  The resulting request didn’t contain the parameters between the first and last ‘?’ characters.

It also did not work when a request came in with no ‘?’, which I believe is a poorly formatted request, but that’s what I have to work with.

 

Here’s the essential parts of the httpd.conf file:

 

RewriteEngine on

RewriteLog my log location

RewriteLogLevel 5

RewriteCond %{REQUEST_METHOD} ^(TRACK|TRACE)

RewriteRule .* - [F,L]

 

RewriteCond "%{QUERY_STRING}" "(.+)"

RewriteRule ^/WebZ/(.*)$ /WebZ/$1{QMRep}%1 [PT,NC]

 

# This one will send the request to the process running on the other server

ProxyPassMatch "/(WebZ)/(.*)({QMRep})(.*?sessionid=([^-]+)-1234)(.*)$" http://$5:1234/$1/$2

 

#This one will send the request to the process running on the same host as the Apache when ‘?’ was changed to {QMRep}

ProxyPassMatch "/(WebZ)/(.*)({QMRep})(.*)$" http://localhost:1234/$1/$2

 

# This one will send the request to the process running on the same host as the Apache when the request starts with /WebZ/

ProxyPassMatch  "/(WebZ)/(.*)$" http://localhost:1234/$1/$2

 

 

From: Jonathon Koyle <litereader@xxxxxxxxx>
Sent: Friday, October 30, 2020 11:24 AM
To: users@xxxxxxxxxxxxxxxx
Subject: [External] Re: [users@httpd] Apache 2.4.7 - How to parse the host and port and send the request to that host and port

 

What do you expect the final url to look like?  What did you try in mod rewrite, because i believe it can do what you have described so far.

 

On Fri, Oct 30, 2020, 08:06 Pennington,Jim <penningt@xxxxxxxx> wrote:

I'm using Apache 2.4.7
I'm currently running and old Apache with customized software and need to change to using a newer Apache.

How do I parse out the server from the request and send the request to the process running on that server (and fixed port)?

Any help is greatly appreciated.
Jim Pennington

A request can come into an Apache running on one server and the request needs to be sent a process running on a different server.
We are using fixed ports and the port in the examples is 1234.

The process that should get the request is derived from the sessionid.
I need to parse out the server and send the request to the process running on that server.

Messages come in with GET or POST and /WebZ/...
Somewhere in the message is sessionid=<server>-<1234>-<...>-<...>

Some requests might have multiple '?' characters.
Some requests might not have any '?' characters.

Here are some example requests.
GET /WebZ/MEdit?sessionid=server09.prod-1234-kgv44z4b-pl2l93:editsessionid=2:catpage=html/corc/catalogue.html:entitymytemplateName=marc?sessionid=server09.prod-1234-kgv44z4b-pl2l93 HTTP/1.1

GET /WebZ/html/corc/helpredirect.html:sessionid=server02.prod-1234-kgvvyfoc-c7bsf2?/WebZ/html/corc/helpredirect.html:sessionid=server02.prod-1234-kgvvyfoc-c7bsf2?http%3A//www.oclc.org/bibformats/en/fixedfield/dtst.html HTTP/1.1

GET /WebZ/html/catexpress/CatExpressBasicSearch.html:sessionid=server09-1234-kgufwyh9-k6bak2:dbname=WorldCat HTTP/1.1

In my httpd.conf file, I have tried several combinations of RewriteCond, RewriteRule and ProxyPassMatch.
The sessionid is typically after the '?' and ProxyPassMatch doesn't find it.

The regular _expression_ below will parse out the server and put it into group $4
/(WebZ)/(.*)(.*?sessionid=([^-]+)-1234)(.*)$


For:
/WebZ/MEdit?sessionid=server09.prod-1234-kgv44z4b-pl2l93:editsessionid=2:catpage=html/corc/catalogue.html:entitymytemplateName=marc?sessionid=server09.prod-1234-kgv44z4b-pl2l93 HTTP/1.1
We would get:
Group 1.        5-9     WebZ
Group 2.        10-136  MEdit?sessionid=server09.prod-1234-kgv44z4b-pl2l93:editsessionid=2:catpage=html/corc/catalogue.html:...
Group 3.        136-164 sessionid=server09.prod-1234
Group 4.        146-159 server09.prod
Group 5.        164-189 -kgv44z4b-pl2l93 HTTP/1.1







---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx


[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux