Skip to content

Instantly share code, notes, and snippets.

@fordnox
Created December 13, 2014 08:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fordnox/a915dceecb63707844cf to your computer and use it in GitHub Desktop.
Save fordnox/a915dceecb63707844cf to your computer and use it in GitHub Desktop.
Split clients nginx conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
split_clients "${remote_addr}-{$query_string}" $goto {
50.0% "http://127.0.0.1:8081";
* "http://127.0.0.1:8082";
}
server {
listen 8080;
return 301 $goto;
}
server {
listen 8081;
return 200 "server1\n";
}
server {
listen 8082;
return 200 "server2\n";
}
}
@fordnox
Copy link
Author

fordnox commented Dec 13, 2014

Test:

$ wget -qO - "127.0.0.1:8080/?a=1234"
server2
$ wget -qO - "127.0.0.1:8080/?a=123"
server1

@jimmyaneja
Copy link

Thanks for your post.. but I am trying to send 50% traffic to another host but it does not work.. see this config

split_clients "${remote_addr}" $goto {
         50.0%   "http://serverA.domain.com";
         50.0%   "http://serverB.domain.com";
    }

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  serverA.domain.com;
        root         /usr/share/nginx/html;
        return 200 $goto;


location / {
        proxy_set_header Host $host;
        proxy_pass http://$goto;
        }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment