server { # Listen on port 80 insecurely until the probes all support https listen 80; resolver dns.weave.local; # topology (from UI) websockets location ~ ^/api/topology/[^/]+/ws { proxy_pass http://query.weave.local$request_uri; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } # control (from probe) websockets location = /api/control/ws { proxy_pass http://controls.weave.local$request_uri; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } # control (from probe & UI) websockets location ~ ^/api/pipe/[^/]+(/probe)? { proxy_pass http://pipes.weave.local$request_uri; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location = /api/report { proxy_pass http://collection.weave.local$request_uri; } location /api/topology { proxy_pass http://query.weave.local$request_uri; } location /api/control { proxy_pass http://controls.weave.local$request_uri; } # Static version file location = /api { alias /home/weave/api.json; } # The rest will be served by the collection server (any one can do it) location / { proxy_pass http://collection.weave.local$request_uri; } }