How can I redirect some IP addresses?

Ruslan Ermilov ru at
Mon Jul 2 10:16:58 UTC 2012

On Sun, Jul 01, 2012 at 12:16:31AM -0400, Jiff wrote:
> Hi forulisters,
> I've got a bunch of IP addresses and IP ranges I'd like 
> to redirect to, let's say the amnesty international site 
> (they're mainly from gov).
> I read but as I've
> got many of them I'm wondering if nginx can read a text 
> file (or something else) instead of put all these addresses 
> in a block?

I think you want the geo module instead:

It supports the "include" directive inside the "geo" block.
(Currently it lacks the IPv6 support though.)

> I'd also like if I can have a round-robin of redirections
> (once for amnesty, next to copwatch, etc)?

While not exactly what you want, but you can use the "split
clients" module to match $remote_port to a particular URL:

(This has a limitation: it will always give you the same
redirection URL over one persistent connection.)

http {
    geo $wrapped { 1;
#	include conf/wrapped.conf;

    split_clients "${remote_port}AAA" $redirect {
	33% http://url1;
	33% http://url2;
	*   http://url3;

    server {
	if ($wrapped) {
	    return 301 $redirect;

	location / {
	    return 200 "normal content";

More information about the nginx mailing list