Рейтинг:0

Как настроить обратный прокси-сервер nginx для диска Synology?

флаг sr

тл;др

Я попытался настроить nginx для переадресации TCP-соединения через 6690 на Synology Drive. Но при использовании слушать 6690 ssl; Клиент Synology Drive не может найти NAS, а при использовании слушать 6690; (без SSL) NAS найден, но вместо сертификата, хранящегося в nginx, используется его неподписанный сертификат. Есть идеи, как включить SSL и использовать обратный прокси-сервер nginx с Synology Drive?

вступление

Я уже нашел несколько сообщений/вопросов, объясняющих, как настроить SSL-подключение к Synology NAS, используя nginx в качестве обратного прокси-сервера на отдельном компьютере. Таким образом, при доступе к (https://)my-domain.com я могу (уже) получить доступ к веб-сайту настроек Synology Drive (т. е. к DSM, доступному через порт 5000/5001). Однако я также хочу настроить Synology Drive для использования того же SSL-сертификата от Let's Encrypt, но здесь у меня возникают трудности с настройкой nginx.

Вопрос

Итак, я хочу настроить только Synology Drive и настроить DNS drive.my-domain.com для доступа к моему маршрутизатору.Кроме того, я приобрел SSL-сертификат для этого домена и настроил HTTPS-порт Synology Drive на 10003. В своем маршрутизаторе я перенаправил порты 80, 443 и 6690 на обратный прокси-сервер в соответствии с рекомендациями. здесь. Для nginx я настроил /etc/nginx/conf.d/synology.conf:

включить /etc/letsencrypt/options-ssl-nginx.conf;

сервер {
    слушать 80;
    server_name drive.my-domain.com default_server;

    # Для проверки Let’s Encrypt
    расположение ^~ /.известный {
        позволять все;
        корень /данные/letsencrypt/;
    }
}

сервер {
    слушать 80;
    слушать 443 ssl;
    имя_сервера drive.my-domain.com;

    место расположения / {
        proxy_set_header Хост $host;
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $ схема;
        proxy_pass https://<IP-OF-SYNOLOGY-NAS>:10003;
        proxy_read_timeout 90;
    }

    ssl_certificate /etc/letsencrypt/live/drive.my-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/drive.my-domain.com/privkey.pem;
    
    включить /etc/letsencrypt/options-ssl-nginx.conf;
    если ($схема != "https") {
        вернуть 301 https://$host$request_uri;
    }
}

Кроме того, я добавил следующую строку в /etc/nginx/nginx.conf:

...

включить /etc/nginx/fallthrough.conf;

И /etc/nginx/fallthrough.conf содержит следующее:

транслировать {

    вышестоящий synology_drive {
         сервер <IP-OF-SYNOLOGY-NAS>:6690;
    }

    сервер {
        слушать 6690 ssl;
        proxy_pass synology_drive;
        
        ssl_certificate /etc/letsencrypt/live/drive.my-domain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/drive.my-domain.com/privkey.pem;
    }
}

Однако при попытке настроить клиент Synology Drive Client не удается подключиться/найти Synology NAS. При изменении /etc/nginx/fallthrough.conf не использовать SSL, т.е.:

транслировать {

    вышестоящий synology_drive {
         сервер <IP-OF-SYNOLOGY-NAS>:6690;
    }

    сервер {
        слушать 6690;
        proxy_pass synology_drive;
    }
}

Synology NAS найден, но используется самозаверяющий сертификат, хранящийся на NAS, вместо сертификата от Let's Encrypt, хранящегося на обратном прокси-компьютере.

Кто-нибудь знает, что я делаю или могу делать неправильно здесь?

Рейтинг:1
флаг us

транслировать модуль является прокси-модулем уровня 4, то есть он только пересылает TCP-пакеты между подключающимся клиентом и проксируемым сервером.

Поскольку TLS происходит на более высоком уровне, nginx не участвует в шифровании SSL. Я действительно удивлен, что nginx не выдает ошибок на ssl_certificate директивы, которые находятся в вашей конфигурации.

Единственный вариант — скопировать закрытый ключ и сертификат из nginx на устройство Synology, так как в этом случае это объект, который завершает соединение TLS.

флаг sr
Перед настройкой nginx в качестве обратного прокси я уже регулярно копировал ключи в Synology. Но это казалось нестабильным и не предпочтительным методом. Что ж... Думаю, пока мне придется придерживаться этого.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.