Apache Гуакамоле ломается, когда я подставляю страницу ошибки 404 в моем nginx интерфейсе - PullRequest
0 голосов
/ 01 апреля 2020

Я недавно настроил сервер 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/;
  }
}
...