Я недавно настроил сервер Apache Гуакамоле, с Гуакамоле, работающим в контейнере docker. Я использую обратный прокси NGINX перед Гуакамоле.
Наша служба безопасности попросила меня скрыть страницу с ошибкой 404, поскольку она выдаёт версию Tomcat. Я сделал это, добавив proxy_intercept_errors on в мою конфигурацию ningx.
Как только я это сделаю, некоторые функции гуакамоле прекратятся. В частности, когда я go Настройки | Группы, а затем нажмите на любую из групп, страница никогда не завершает загрузку. Когда я закомментирую строку proxy_intercept_errors в nginx, та же страница работает как обычно (но наша команда безопасности жалуется).
Другой более ранний вопрос предлагал заменить страницу 404 путем изменения конфигурации Tomcat. Каков наилучший способ перенаправить URL-адрес Tomcat 404 с Apache в качестве внешнего интерфейса? Для меня это неприемлемый вариант, поскольку Tomcat находится внутри контейнера с гуакамоле, и я бы предпочел не создавать свой собственный контейнер поверх него.
Итак, мой вопрос: почему просто перехват 404 страниц нарушает действительную функциональность в гуакамоле? И как я могу решить эту проблему?
Вот моя nginx конфигурация.
server {
listen 80;
server_name <redacted>;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name <redacted>;
root /var/www/html;
index index.html;
ssl_certificate <redacted>;
ssl_certificate_key <redacted>;
# a lot of SSL configuration redacted.
access_log /var/log/nginx/guac_access.log;
error_log /var/log/nginx/guac_error.log;
error_page 404 /404.html;
location /guacamole {
return 301 https://guacamole.sandiego.edu/guacamole/;
}
location /guacamole# {
return 301 https://guacamole.sandiego.edu/guacamole/;
}
location /guacamole/ {
// -----------------------------------
// Without this line, Guacamole works as expected.
proxy_intercept_errors on;
// -----------------------------------
proxy_pass http://<redacted>:8080/guacamole/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_cookie_path /guacamole/ /guacamole/;
}
}