Welcome! Log In Create A New Profile

Advanced

Location header, memcached, nginx, django and redirected paths

Michel Sabchuk
August 20, 2010 02:10PM
Hi guys, how are you?

I using nginx, django and memcached for a site. If some path isn't on
memcached, nginx send it to apache/django, the cache are generated
and, until it expires, nginx takes care of the requests by sending it
to memcached directly.

It works very well except when django tries to redirect a user using a
301 or 302 redirect (for login protected pages in example).

I reading the debug but, as far as I could undestand, the problem is
related with the "memcached_pass" instruction. I removed the
memcached_pass instruction sending all the traffic to the fallback and
the redirects worked again.

Is there any way to test the request and check if it is a redirect
and, in this case, just do a proxy_pass? I see that all redirects have
a "Location: something" header. I could not test it, does anyone know
how to?

Here is my configuration file:

upstream backend {
server 127.0.0.1:8000 weight=1;
}

server {
listen 80 default;
server_name localhost;

location / {

# do not cache post requests
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if ($request_method = POST) {
proxy_pass http://backend;
break;
}

# how to check if this is a redirection?
if ($http_location ~* .+) {
proxy_pass http://backend;
break;
}

# each page can have a pv cookie that sets the page version of this
# page. It can be used for login pages
if ($http_cookie ~* "pv=([^;]+)(?:;|$)") {
set $page_version $1;
}
set $memcached_key PR:$request_uri&pv=$page_version;
default_type text/html;
memcached_pass 127.0.0.1:11211;

# if the page was not found in memcached, go to the backend
error_page 501 502 404 405 @fallback;
}

location @fallback {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}

Can I paste some nginx error log snippet (debugged)?

Thanks for any help.

--
Michel Thadeu Sabchuk
Curitiba - Brasil

_______________________________________________
nginx mailing list
nginx@nginx.org
http://nginx.org/mailman/listinfo/nginx
Subject Author Posted

Location header, memcached, nginx, django and redirected paths

Michel Sabchuk August 20, 2010 02:10PM

Re: Location header, memcached, nginx, django and redirected paths

Michel Sabchuk August 24, 2010 10:06AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 297
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready