conditionally disable keepalives
Ryan Malayter
malayter at gmail.com
Fri Sep 17 22:36:42 MSD 2010
On Fri, Sep 17, 2010 at 12:20 PM, Ryan Malayter <malayter at gmail.com> wrote:
> On Fri, Sep 17, 2010 at 11:34 AM, Cliff Wells <cliff at develix.com> wrote:
>> Or you could run a second Nginx instance between them and the main Nginx
>> instance.
>
> I thought about that... I suppose I could even have the same nginx
> instance proxy to itself, as the source IP would change to localhost
> on the subrequest, but it seems wasteful and potentially brittle.
So, the "proxy back to another nginx" (in this case the same instance)
Cliff suggested seems to be working, and I get a "Connection: close"
header for the IPs I am interested in, and keepalives seem to be off.
However, I do not get see the header I add in my special location,
even though I know it is hitting that location via rewrite. Is
proxy_pass http://127.0.0.1 treated specially by nginx somehow? I
would also expect to see two entries in the log files for every
request, but I do not.
Here is what I have (streamlined config)
server {
if ($remote_addr ~ "^(111\.111\.111\.111|222\.222\.222\.222)$") {
rewrite ^(.*)$ /nokeepalive$1;
}
location /
#and and many other locations
location /nokeepalive {
keepalive_timeout 0;
add_header "X-NoKeepalive-Proxy" "true";
proxy_set_header Host $host;
#proxy back to myself at original request URI
rewrite /nokeepalive(.*)$ $1;
proxy_pass http://127.0.0.1;
}
}
--
RPM
More information about the nginx
mailing list