1

У меня есть 3 сервера, работающие на 3 отдельных виртуальных машинах. Один обрабатывает запросы домена и обратные прокси-серверы двух других и добавляет шифрование SSL. Первый сервис запускает NextCloud (PHP-FPM 7, Nginx, MariaDB), второй - Гуакамоле (Jetty, Guacd, MySQL). Оба сервиса работают независимо друг от друга. Каждый сервис может быть обратно прокси без проблем. Я следовал инструкциям обоих провайдеров для настройки обратных прокси-серверов в соответствии с требованиями.

Когда я пытаюсь обслуживать обе службы с одного и того же обратного прокси-сервера nginx (чтобы правильно маршрутизировать guac.domain.com и cloud.domain.com), служба Guacamole продолжает оставаться доступной, но NextCloud перестает отвечать и возвращает только 502 ошибки. Если я закрою окно браузера Guacamole на несколько минут, облако снова станет доступным. В файлах журналов нет ничего, что я вижу, что указывает на проблему (кроме тайм-аута шлюза)

Обратный прокси настраивается следующим образом:

worker_processes 2;

events {
    worker_connections 1024;
}

http {
    include mime.types;
    default_type application/octet-stream;
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    access_log logs/access.log main;
    error_log /var/log/nginxerror.log warn;
    sendfile off;
    keepalive_timeout 65;
    gzip off;
    server_tokens off;

#default for non-configured domains and IP address
    server {
        return 404;
    }


    include /usr/local/etc/nginx/nginx-sites/*.conf;

}

/usr/local/etc/nginx/nginx-sites/*.conf включает в себя две конфигурации:

Прокси NextCloud:

server {
    server_name cloud.domain.com;
    listen 80; 
#redirect visitors to the HTTPS version of the site
    location / {
        return 301 https://$server_name$request_uri;
    }
}

server {
    server_name cloud.domain.com;
    listen 443 ssl;

    #### unimportant SSL config

    access_log            /var/log/nginx/cloud.access.log;

    location / {
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://172.16.1.108;
        #proxy_read_timeout  90;
    }
}

Гуакамоле прокси:

server {
    server_name guac.domain.com;
    listen 80;
#redirect visitors to the HTTPS version of the site
    location / {
        return 301 https://$server_name$request_uri;
    }
}

server {
    server_name guac.domain.com;
    listen 443 ssl;

    #### unimportant SSL config

    access_log            /var/log/nginx/guac.access.log;

    location / {
        auth_basic "Guac Login";
        auth_basic_user_file /usr/local/etc/nginx/nginx-sites/guac.pas;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version      1.1;
        proxy_set_header        Upgrade $http_upgrade;
        proxy_set_header        Connection $http_connection;
        proxy_cookie_path       /guacamole/ /;
        proxy_pass http://172.16.1.110:8080/guacamole/;
    }
}

Я попытался изменить директиву proxy_pass для конфигурации cloud.domain.com на другой внутренний сайт, который намного проще, чем NextCloud, и прокси продолжает работать. Я подозреваю, что проблема заключается в веб-сокете, который пытается поддерживать прокси, но я не знаю, как его отладить.

Благодарю.

0