Страница 1 из 1

Nginx-прокси для mychat

СообщениеДобавлено: Вт мар 05, 2019 3:06 pm
danser-by
Добрый день.
Хотел бы реализовать связку mychat и телеграм, для этого необходим валидный SSL-сертификат.
Организация уже использует ряд сервисов, запросы к которым проксируются через nginx с получением сертификатов от let's encrypt. Хотелось бы добавить конфигурацию для mychat, если это возможно.

Не было ли ни у кого подобного опыта?
В таком случае, интеграция с телеграм была бы бесплатной и не меняла бы существующие схемы взаимодействия корпоративных сервисов.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Вт мар 05, 2019 3:09 pm
Андрей Раков
Добрый день.

А в чем проблема добавить полученные вами сертификаты на сервере чата?

Re: Nginx-прокси для mychat

СообщениеДобавлено: Вт мар 05, 2019 3:12 pm
danser-by
Сдаётся мне несколько костыльным решением.
На данный момент все сертификаты хранятся и обновляются на сервере nginx.
Копировать/монтировать директории/настраивать rsync на сторонний виндовый сервер с чатом не кажется самой стабильной затеей.
Хотя возможно я не до конца понял Вашу идею.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Вт мар 05, 2019 3:38 pm
Андрей Раков
Наш сервер берет файлы сертификатов из своей папки в профиле C:\ProgramData\MyChat Server\cert\.

Как вариант, вы можете первый раз добавить сертификаты на сервере вручную, а далее их обновлять напрямую в этой папке и перезапускать веб-сервер хотя бы раз в 2 месяца, чтобы всегда попадать в период 90 дней.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Вт мар 05, 2019 4:07 pm
danser-by
Ок, похоже, что без костылей никак.

Как вообще пользователи активируют интеграцию с телеграм? Неужели действительно покупают для этого отдельные сертификаты и только? Меня в принципе удивляет тот факт, что нет какой-либо изкоробочной интеграции с let's encrypt.
Да и проксирование nginx, как пользователи mychat разруливают запросы к внутрикорпоративным ресурсам?

Re: Nginx-прокси для mychat

СообщениеДобавлено: Вт мар 05, 2019 4:27 pm
Андрей Раков
Конечно, мы стремимся к максимальной автоматизации, но мы не всесильны.
Как вообще пользователи активируют интеграцию с телеграм?

Вот так: https://nsoft-s.com/mychatarticles/1158 ... egram.html
удивляет тот факт, что нет какой-либо изкоробочной интеграции с let's encrypt

Самостоятельно генерировать ключи Let's Encrypt мы не умеем, а для этого используем стороннее решение.

Если вы готовы заказать приоритетную доработку по автоматизации этого процесса — вэлкам, мы готовы это сделать, почему на платной основе — сейчас уже есть много задач, которые "очень нужны".

Также поясните:
Да и проксирование nginx, как пользователи mychat разруливают запросы к внутрикорпоративным ресурсам?

Что конкретно вы хотите "разрулить"?

Re: Nginx-прокси для mychat

СообщениеДобавлено: Вт мар 05, 2019 4:58 pm
danser-by
Да, ветку по ссылке я уже читал.
Но в любом случае, реальный пример - у меня внутри сети есть гуакамоль, астериск, почта, хранилка паролей, сайт и ещё одна страшная муть. Каждая имеет свой домен, внешний статический адрес один.
80 и 443 проброшен на сервер nginx, он обновляет и подсовывает сертификаты let's encrypt. хочу я обеспечить доступ и к серверу mychat - придётся проксировать запросы через nginx.

В ваших же инструкциях подразумевается, что 80-ый и 443-тий порт напрямую проброшены на сервер чата и никаких промежуточных звеньев в этой цепи нет. Отсюда и сомнения, касательно использования подобной схемы.

Но похоже, выбирать не приходится. Попробуем прозрачно проксировать все запросы по 80 и 443 для домена mychat на сервер чата, где развернём дополнительно схему с zerossl. Конечно, это кажется избыточным, но что поделать.

Параллельно попробую обойтись средствами nginx, если что-нибудь домучаю - отпишусь.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Вт мар 05, 2019 5:02 pm
Алексей Пикуров
Как nginx догадается, какой запрос надо отправлять, к примеру, на апач с вашим сайтом, а какой — на сервер MyChat, если TCP порт один и тот же?

Он такое умеет делать? Если да, то как?

Re: Nginx-прокси для mychat

СообщениеДобавлено: Вт мар 05, 2019 5:25 pm
danser-by
Эм...
Ну наверняка же он смотрит на http-заголовки, ищет соответствие в server_name параметрах и в соответствии с этим применяет соответствующие proxy_pass.
Я не знаю как местный форум относится к ссылкам на сторонние ресурсы, но Вы всегда можете загуглить что такое nginx reverse roxy.

Да и не ngixn-ом единым, есть же caddy, есть traefik, да много чего есть.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Вт мар 05, 2019 5:35 pm
Андрей Раков
К ссылкам мы относимся положительно (кроме спама и т.д), форум не только для нас, но и для наших пользователей, которые ищут решения различных задач.

А можно вместо RTFM привести пример — как сервер Nginx поймет, что внешний запрос, проходящий через него предназначен для MyChat?

Re: Nginx-прокси для mychat

СообщениеДобавлено: Вт мар 05, 2019 5:46 pm
danser-by
Хм, или я что-то не так понимаю..
Просто довольно странно, что такой банальный момент вызывает вопросы, возможно я просто что-то не учёл? Это же простой http/https трафик, его нужно разделить по доменам, верно? Тогда тема стара как мир, и я не понимаю, почему это в принципе вызывает какие-то сомнения или вопросы. А как апач с виртуалхост разруливал запросы по доменным именам? Тоже ведь старая тема.

Для nginx, банальный пример конфига:


Код: Выделить всё
server {
    listen 80 default_server;
    root /var/www/html;

    location / {
        try_files $uri /index.html;
    }
}

server {
    listen 80;
    server_name mail.companyname.com;

    location / {
        proxy_pass http://mail.companyname.local/;
    }
}

server {
    listen 80;
    server_name mychat.companyname.com

    location / {
        proxy_pass http://mychat.companyname.local:8080/;
    }
}


Т.е. смотрим в содержимое http-запросов, отлавливаем домен, отправляем запрос по .local-домену, на сервер в локальной сети.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Вт мар 05, 2019 6:35 pm
Андрей Раков
Далеко не все используют Nginx, как используете его вы (если вообще используют).

Вы первый, кому понадобилась настроить проброску трафика к серверу чата через него, либо это настраивали без нашей помощи.

Как мне посоветовал гуголъ:
https://www.sitepoint.com/configuring-n ... l-node-js/
https://blog.theodo.fr/2015/09/protect- ... tificates/

Необходимо внести некоторые модификации в конфиг Nginx, пример:
Код: Выделить всё
server {
  listen       80;
  listen       443 ssl;
  server_name  mychat.example.com;

  ssl_certificate  /etc/nginx/ssl/server.crt
  ssl_certificate_key /etc/nginx/ssl/server.key

location / {
    proxy_pass http://mychat_ip:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }
}

Я так понимаю, что на самом сервер чата веб-шифрование включать не обязательно, так как трафик уже внутренний, хотя есть другие варианты, когда внутренний сервис тоже использует шифрование, этот вариант пока пропустим.

Попробуйте — будет ли работать?

Re: Nginx-прокси для mychat

СообщениеДобавлено: Ср мар 06, 2019 8:04 pm
Андрей Раков
Есть ли какой-то результат?

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 11:55 am
ErDmitry
Здравствуйте!
Вижу вопрос остался без ответа. У меня точно такая я же ситуация и хочется продолжить этот разговор.
Я не особо знаток nginx, но у меня на нём успешно работают несколько ресурсов и мне надо MyChat завести так же через него.
Очень удобно, когда несколько ресурсов обрабатывается одним nginx. Экономит наличие белых адресов, нет нужды покупать выделенный сервер, т.к. всё работает на одном.
В общем попробовал я предложенный конфиг и работает только https://mychat.домен/lobby/ переход например на https://mychat.домен/chat безуспешно, по всей видимости надо сам MyChat переводить в https режим. В принципе, ситуация очень схожа с Wordpress, он тоже не особо хочет работать в таком режиме и я так и не решил проблему с ним, просто не стал им пользоваться.
Я конечно ещё буду пытаться и если получится отпишусь, но хотелось бы что бы и тех поддержка обратила внимание на эту проблему, т.к. я уверен много у кого возникает этот вопрос.
Вот мой пример конфига nginx. По сути тоже самое, только включена принудительная переадресация на https.
Код: Выделить всё
server {
    listen 80;
    server_name mychat.домен;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name mychat.домен;

    access_log /var/log/nginx/mychat.домен.443.accept.log;
    error_log /var/log/nginx/mychat.домен.443.error.log;

    include ssl.conf;
    ssl_certificate /etc/letsencrypt/live/mychat.домен/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mychat.домен/privkey.pem;

    location / {
        proxy_pass http://192.168.5.25:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 12:08 pm
ErDmitry
Попробовал обычный http, такая же ситуация.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 12:54 pm
Алексей Пикуров
Дмитрий, это не проблема, MyChat и web-сайт — это не одно и то же. Любой кеширующий сервер тут вообще не применим, это как самолёт и подводная лодка, совершенно несовместимые и работающие по разным принципам вещи.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:08 pm
ErDmitry
Ну matrix работает и сейчас, перед этим Rocket.Chat работал, как заставить MyChat через nginx работать?

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:08 pm
Алексей Пикуров
Я не знаю.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:11 pm
Андрей Раков
При настройке nginx учтите, что порты, которые установлены на сервере, должны совпадать с теми, что вы пробрасываете.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:13 pm
ErDmitry
Я же написал, что :8080/lobby/ работает как http так и https, а всё остальное нет.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:14 pm
ErDmitry
Смотрите сами, попробуйте в разных браузерах http и https
https://mychat.ingashcrb.ru/lobby/

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:15 pm
Андрей Раков
А где проброс "остального"?

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:18 pm
ErDmitry
ftp я выключил, 2004 кинул через другой маршрут, хотя изначально пробовал так же через nginx. Другие порты пока не пробрасывал.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:19 pm
Андрей Раков
Телнетом 2004 проверяли?

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:21 pm
ErDmitry
Хмм, 2004 закрыт, поправлю, а он обязателен для браузера?

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:21 pm
Андрей Раков
Он обязателен для подключения клиента

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:24 pm
Андрей Раков
Посмотрите логи нгеникса когда переходите в вебчат, это он чудит.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:29 pm
ErDmitry
Видимо логирование надо включить подробное, нет в логах ни чего по этому поводу.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:31 pm
Андрей Раков
Вам нужно выяснить, какой запрос формирует шлюз при переходе по ссылке чата

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:32 pm
ErDmitry
Код: Выделить всё
2021/02/27 17:31:09 [info] 1644#1644: *5147 client canceled stream 3 while sending request to upstream, client: 213.87.123.255, server: mychat.ingashcrb.ru, request: "GET /chat/ HTTP/2.0", upstream: "http://10.110.5.25:8080/chat/", host: "mychat.ingashcrb.ru", referrer: "https://mychat.ingashcrb.ru/lobby/"

2021/02/27 17:31:28 [info] 1644#1644: *5147 client canceled stream 59 while sending request to upstream, client: 213.87.123.255, server: mychat.ingashcrb.ru, request: "GET /chat/ HTTP/2.0", upstream: "http://10.110.5.25:8080/chat/", host: "mychat.ingashcrb.ru", referrer: "https://mychat.ingashcrb.ru/lobby/"


Два запроса

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:33 pm
Андрей Раков
Пожалуйста обрамляйте логи тегом code, он есть в линейке форматирования.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:37 pm
Андрей Раков
Ну вот, вы имеете логи шлюза, теперь можете разобраться в чем причина . К сожалению, мы не являемся спецами во всех системах, мы можем подсказать, где искать в таких случаях.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:44 pm
ErDmitry
Неужели вы ни где не используете nginx? попробуйте, удивитесь насколько он хорош).
У меня есть конечно ещё вариант без nginx, но это всё же не хорошо, хотел приберечь белый адрес на всякий случай, похоже случай наступил.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:45 pm
Алексей Пикуров
Мы — нет. Не нужно просто.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 1:48 pm
Алексей Пикуров
Я поясню. Мы не используем nginx не потому, что он хороший или плохой, а потому что он нам не нужен для задачи создания MyChat.

Если придумаем, как его эффективно использовать — тогда, конечно, да. Но пока нам кеширующий web-сервер не нужен, мы со своими задачами эффективно справляемся.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:00 pm
ErDmitry
Думал, хотя бы клиент на тел. будет работать но нет, пробросы обычные без nginx.
Подумаю ещё, но очень не нравится мне эта ситуация.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:15 pm
ErDmitry
Дело не в том что он вам не нужен, а нужен он вашим некоторым клиентам. Продукт у вас платный и некоторые хотели бы использовать платный продукт так как им хочется.
Не спорю, у вас в одной коробке много чего есть, но это всё можно заменить бесплатными отдельными продуктами, которые будут работать через тот же nginx.
И вам пора бы уже перейти на Linux, я узнал что ваш сервер работает на Windows уже перед установкой, я был в шоке. А если корпоративная сеть вся на Linux?
В России пока только в задумках законопроект запретить использовать зарубежные технологии для бюджетных учреждений, но это точно будет, серверы и ПК за бюджетные средства уже нельзя покупать и без всяких там лазеек в законе.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:16 pm
Алексей Пикуров
Сервер на Linux мы переносить не планируем. Что есть — то есть.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:18 pm
Алексей Пикуров
Не сочтите за стёб, конечно, но в России нет отечественных операционных систем. От слова совсем.

Разного пошиба сборки линуксов есть только потому, что они бесплатны и открыты. Но не потому что они лучше или хуже того же Windows.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:22 pm
ErDmitry
))) стёб не удался, я не фанат Российских разработок), разве что дома сижу на Calculate Linux и он мне очень нравится).
А в обще в России приказом заставят работать на Астра Linux и деваться уже некуда, будем работать на чём заставят.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:23 pm
ErDmitry
У меня и matrix сейчас крутится в LXC контейнере на Calculate Linux и очень даже круто работает включая видео конференции.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:24 pm
Алексей Пикуров
Я вас понимаю. Клиентские приложения для разных линуксов у нас есть. Но сервер слишком сложная штука, чтобы просто взять и переделать его под Linux. Без каких-либо гарантий профита от этой затеи :) Уверен, вы понимаете это.
У меня и matrix сейчас крутится в LXC контейнере

Тогда в чём проблема? Используйте его, если он вам подходит и решает все ваши задачи.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:28 pm
ErDmitry
Тогда в чём проблема? Используйте его, если он вам подходит и решает все ваши задачи.

Используем, но в других больницах сманили меня на MyChat), вот и решил попробовать.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:28 pm
Алексей Пикуров
Принято :)

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:44 pm
ErDmitry
Ох ребят, пока мы с вами тут спорили, сервер-то не работал как надо). Я локально потом тоже не смог подключиться, пришлось перезапустить службу через скрипты и он заработал. Правда клиент с тел. так и не пашет, но в браузере норм.
Почему тогда на тел. не работает?

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:47 pm
Алексей Пикуров
Я не знаю. Логи хотя бы покажите или сообщения, что пишет клиент.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:48 pm
ErDmitry
Скрин с тел. выше, точно такая же ошибка.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:50 pm
ErDmitry
Могу в личку кинуть учётку, что бы сами посмотрели?

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:52 pm
ErDmitry
Очень похожая запись
Код: Выделить всё
[18:44:36:682 5]: Ошибка #0102: попытка подключения неизвестного приложения, IP: "213.87.123.255", Data: ""

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:52 pm
Алексей Пикуров
Позвоните мне любым мессенджером и запустите AnyDesk.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:54 pm
Алексей Пикуров
Если написать в консоли telnet mychat.ingashcrb.ru 443, то я вижу такое:
nginx.png
nginx.png (6.31 КБ) Просмотров: 3144

Но меня должен отключить сервер MyChat (nodejs), а не ваш nginx.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 2:59 pm
ErDmitry
Позвоните мне любым мессенджером и запустите AnyDesk.

Что-то не могу найти контакта с вами через тот же телеграмм например.

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 3:00 pm
Алексей Пикуров

Re: Nginx-прокси для mychat

СообщениеДобавлено: Сб фев 27, 2021 4:21 pm
ErDmitry
В итоге поступил так.
Поменял порт и пробросил его снаружи, подсунул сертификаты которые уже были для nginx и всё успешно работает.
Спасибо тех. поддержке, подключились и поговорили в телефонном режиме по телеграмм, обсудили некоторые моменты).

Re: Nginx-прокси для mychat

СообщениеДобавлено: Вт сен 07, 2021 11:08 am
MousE
Добрый день.
Вот решение проблемы выше.
Конфиг нгинкса
Код: Выделить всё
server {
   listen 80;
   listen [::]:80;
   server_name chat.*********.by;
   access_log /var/log/nginx/chat-access.log;
   error_log /var/log/nginx/chat-error.log debug;
   return 301 https://$server_name$request_uri;
 }

server {
    listen 443 ssl http2;
    server_name chat.***********.by;
    access_log /var/log/nginx/chat-access.log;
    error_log /var/log/nginx/chat-error.log debug;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/**********/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/**********/privkey.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;


 location / {
     proxy_pass http://локальный адрес сервера:8081;
     proxy_read_timeout 300s;
     proxy_connect_timeout 75s;
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "upgrade";
     proxy_set_header Host      $host:$server_port;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
 }


В админке сайта отключить использование шифрование трафика, в приложении указывать 443 порт

Re: Nginx-прокси для mychat

СообщениеДобавлено: Чт сен 09, 2021 5:56 pm
ErDmitry
Спасибо большое, но мы отказались от mychat в пользу matrix. Уверен ваш ответ поможет в других ситуациях, ну и тем кому это потребуется.
Как я уже писал в этом посте, в России помаленьку государственные организации будут переводить на Linux, так и оказалось. Силовиков уже перевели на Linux, больницы до 2024-го года перевести, хотят они этого или нет. Да и я уверен что такие вещи как чат, сайт да и в обще подобные дела, просто обязаны сделаны на Linux. Германия для медицины выбрали matrix не просто так https://www.linux.org.ru/news/opensource/16435610 думаю и мы будем на него переходить рано или поздно, а я свою больницу уже перевёл).