Welcome! Log In Create A New Profile

Advanced

Fwd: help websockets

Alison
June 18, 2021 10:14AM
Hi,

I'm using the following ingress in my jupyterhub application to expose the
application externally from within the cluster:

################

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: py-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /jupyterhub$1$2
namespace: default
spec:
rules:
- http:
paths:
- path: /jupyterhub(/|$)(.*)
backend:
serviceName: jupyterhub
servicePort: 8888


#################

When I deploy my application to one kubernetes cluster it works without
problems.

If I deploy the same application to another kubernetes cluster it fails
(due to http 400 websockets). The part that fails is when I try from the
Jupyter Notebook .... New ->Terminal ... or .... New -> Python3 kernel

Any idea of what kind of additional annotations I need to add to the above
ingress to solve the websocket issue ?

https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/

The nginx.conf content looks as follows for the application in both clusters

#########################

location ~* "^/jupyterhub(/|$)(.*)" {
set $namespace "default";
set $ingress_name "py-ingress";
set $service_name "";
set $service_port "";
set $location_path "/jupyterhub(/|$(literal_dollar))(.*)";

rewrite_by_lua_block {
lua_ingress_rewrite({
force_ssl_redirect = false,
ssl_redirect = true,
force_no_ssl_redirect = false,
use_port_in_redirects = false,
})
balancer.rewrite()
plugins.run()
}

header_filter_by_lua_block {
lua_ingress.header()
plugins.run()
}

body_filter_by_lua_block {
}

log_by_lua_block {
balacer.log()

monitor.call()

plugins.run()
}

port_in_redirect off;

set $balancer_ewma_score -1;
set $proxy_upstream_name "default-jupyterhub-8888";
set $proxy_host $proxy_upstream_name;
set $pass_access_scheme $scheme;
set $pass_server_port $server_port;
set $best_http_host $http_host;
set $pass_port $pass_server_port;
set $proxy_alternative_upstream_name "";
client_max_bosy_size 1m;
proxy_set_header Host $best_http_host;

# Allow websocket connections

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Request-ID $req_id;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $pass_access_scheme;
proxy_set_header X-Forwarded-Host $best_http_host;
proxy_set_header X-Forwarded-Port $pass_port;
proxy_set_header X-Scheme $pass_access_scheme;
proxy_set_header X-Original-Forwarded-For $http_x_forwarded_for;
proxy_set_header Proxy
proxy_connect_timeout 5s;
proxy_send_timeout 60s;
proxy_buffering off;
proxy_buffer_size 4k;
proxy_buffers 4 4k;
proxy_max_temp_file_size 1024m;
proxy_request_buffering on;
proxy_http_version 1.1;
proxy_cookie_domain off;
proxy_cookie_path off;
proxy_next_upstream error timeout;
proxy_next_upstream_timeout 0;
proxy_next_upstream_tries 3;

rewrite "(?i)/jupyterhub (/|$)(.*)" /jupyter$1$2 break;

proxy_pass http://upstream_balancer;

proxy_redirect off;

}

##########################

Thank you very much,

Alison
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

Fwd: help websockets

Alison June 18, 2021 10:14AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 146
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready