Você está usando um local aninhado no momento e não tenho certeza de como proxy_pass
é herdado pelo bloco interno. Você poderia experimentar dois blocos location
independentes com um proxy_pass
explícito em cada bloco:
location /service/ {
proxy_read_timeout 30s;
proxy_pass http://service:8080/;
}
location /service/ws {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 36000s;
proxy_pass http://service:8080/ws;
}