Я использую Ubuntu, Apache, mod_proxy_wstunnel (Enabled), Shiny-Server и R. Я настроил shiny-server для локального прослушивания и Apache для запросов прокси для shiny-server. Я также установил базовую авторизацию в моей конфигурации Apache для всего домена.
Все в порядке, за исключением случаев, когда приложение блестящего сервера пытается сделать запрос веб-сокета. Я получаю следующую ошибку.
WebSocket connection to 'ws://xxxxxx.com/shiny-application/__sockjs__/407/ercpnzw1/websocket' failed: Error during WebSocket handshake: Unexpected response code: 401
Обычно я просто добавляю точный URL-адрес для веб-сокета, но этот URL-адрес sock.js динамически и всегда изменяется.
Есть ли способ решить эту проблему с помощью регулярного выражения в конфигурации apache?
Чтобы исправить эту проблему, скорее всего, вызванную обратным прокси-сервером с Shiny-server и Apache. Добавьте disable_websockets true; как показано ниже. ** ПРИМЕЧАНИЕ. ** Кажется, это работает только с более новыми версиями Shiny-Server (я считаю, что Shiny Server Professional v1.2.0).
# Define the user we should use when spawning R Shiny processes
run_as shiny;
disable_websockets true;
# Define a top-level server which will listen on a port
server {
# Instruct this server to listen on port 3838
listen 3838;
# Define the location available at the base URL
location / {
#### PRO ONLY ####
# Only up tp 20 connections per Shiny process and at most 3 Shiny processes
# per application. Proactively spawn a new process when our processes reach
# 90% capacity.
utilization_scheduler 20 .9 3;
#### END PRO ONLY ####
# Run this location in 'site_dir' mode, which hosts the entire directory
# tree at '/srv/shiny-server'
site_dir /srv/shiny-server;
# Define where we should put the log files for this location
log_dir /var/log/shiny-server;
# Should we list the contents of a (non-Shiny-App) directory when the user
# visits the corresponding URL?
directory_index on;
}
}