Jupyterlab, reverse proxy, nginx, subfolder

그러니까 NGINX를 reverse proxy로 사용하는 환경에서 Jupyterlab 을 사용하는 방법이다. Jupyterlab을 /에 이용하는 것은 어렵지 않다. 그런데 subfolder에 reverse proxy로 할당해서 이용하려면 설정이 대단히 복잡해 진다. 수십번의 시도 끝에 방법을 찾았다.

/sr 에 reverse proxy로 Jupyterlab을 연동시켜 보자. 우선 index.html 파일을 다음과 같이 설정한다.

<a href="sr/">Super Resolution</a><br>

다음에는 nginx 설정은 다음과 같이 했다.

upstream sr {
        server sr.medein:8888;
}

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/blog;

        location /sr/ {
                client_max_body_size 0;
                proxy_pass http://sr;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        location /sr/api/kernels/ {
                client_max_body_size 0;
                proxy_pass http://sr;
                proxy_set_header      Host $host;
                # websocket support
                proxy_http_version    1.1;
                proxy_set_header      Upgrade "websocket";
                proxy_set_header      Connection "Upgrade";
                proxy_read_timeout    86400;
        }
        location /sr/terminals/ {
                client_max_body_size 0;
                proxy_pass http://sr;
                proxy_set_header      Host $host;
                # websocket support
                proxy_http_version    1.1;
                proxy_set_header      Upgrade "websocket";
                proxy_set_header      Connection "Upgrade";
                proxy_read_timeout    86400;
        }
}

그리고 Jupyterlab의 환경 설정 파일에서 다음과 같이 수정한다.

c.ServerApp.base_url = '/sr/'

Jupyterlab을 실행할 때 환경 파일을 정확하게 지정해 주는 것이 좋다.

jupyter lab --ip=* --no-browser --allow-root --ServerApp.config_file='/root/.jupyter/jupyter_lab_config.py'