RewriteMap and RewriteLock - users getting each other's redirects

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

 



Our rewrite rules were becoming difficult to manage here, so we decided to instead use a python script and config file to easily edit and add rewrite rules.  However, when we implemented this change, we saw what appears to be a synchronization issue.  I’ll try to sum up what we have in code.

 

Using rewritemap and rewritelock, we made the following changes to our conf file:

 

In httpd.conf:

RewriteLock /tmp/rewritelockfile.lock

 

In vhost:

RewriteEngine On

RewriteLogLevel 1

RewriteLog  /weblog/httpd/logfile

 

RewriteMap rewritepy prg:/bin/rewriter.py

RewriteRule .* ${rewritepy:%{THE_REQUEST} [L]

 

For the sake of not including too much python code, we will sum up /bin/rewriter.py as having:

 

while True:

request = sys.stdin.readline()

results = get_redirect(request)

sys.stdout.write(results + "\n")

sys.stdout.flush()

 

In a low traffic environment, there is no problem, but when many users are hitting this at the same time, we see users getting each other’s redirects.  For example, user 1 asks for page a and user 2 asks for page b, but user 1 gets page b and user 2 gets page a. 

 

We have tested quite a bit with creating the file ahead of time using varying permissions to see if any errors or warnings appeared in the error log but saw nothing.  We set the permissions obviously wrong on several occasions, but apache didn't seem to notice or care.

 

We have also run strace against the process and cannot see where apache even attempts to create or access the file when a request is made.

 

We have tested with various versions of apache:

 

Centos 4.7/Apache/2.0.52/httpd-2.0.52-41.ent.centos4

Centos 5/Server version: Apache/2.2.3/httpd-2.2.3-11.el5_1.centos.3

Ubuntu 8.04/Apache/2.2.8(Ubuntu)/apache2.2-common 2.2.8-1ubuntu0.3

 

And we see the same results each time … does not appear to access the file.

 

We can confirm that rewrite itself is working and also can see the extra semaphore being created via ipcs when we have RewriteLock turned on.

 

It was our understanding that the RewriteLock was supposed to prevent synchronization issues such as this. 

 

Any help would be appreciated.


[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