Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296

Сервис на TcpClient и NGINX

20.06.2024, 14:38. Показов 1631. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый!
Есть сервер на Ubuntu, на котором развернут NGINX и установлена служба, написанная на .Net6 с TcpClients. Для службы есть клиентское приложение, написанное на том же .Net6 с TcpClients.
Суть такая - клиентское приложение (клиент1) посылает в stream TcpClient поток байт с данными, которые улетают на сервер с someSite.ru:80. На сервере NGINX перенаправляет все это на 127.0.0.10:6560, который прослушивается службой с TcpListner. Служба получив данные, через поток TcpClient отправляет эти данные клиенту2 во внешний мир (тобишь обратно через NGINX).

Если установить клиента и сервера на локальный ПК (приложения кроссплатформенные, поэтому тестировал и на Ubuntu и на Windows) и указать обоим ip 127.0.0.10 и порт 6560, то они коннектятся и обмен происходит без проблем. Проблемы начинаются когда перекидываю служу на сервер - клиенты не могут до нее достучаться из вне.
Причем дело не доходит даже до самого подключения, не то что до обмена данными (когда TcpListner обнаруживает нового клиента, то в логи пишется уведомление, но таких уведомлений не появляется).

Настройки NGINX:
Code
1
2
3
4
5
6
7
8
9
server {
    listen        80;
    server_name someSite.ru;
    location / {
        proxy_pass         http://127.0.0.10:6560;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
    }
}
В сетевом программировании можно сказать новичок, но несколько сайтов на ASP на том же сервере работают исправно.
Единственное отличие - клиент со службой передают в сокет чисто байты, а ASP приложения обмениваются GET-POST запросами. Возможно, нужно как-то оборачивать байты в HTTP перед передачей их в поток TcpClient, либо как-то по особому настраивать NGINX на работу с потоком байт.

Буду благодарен за любую помощь, второй день уже бьюсь с проблемной
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.06.2024, 14:38
Ответы с готовыми решениями:

Ansible role для устаноки и настройки nginx конкретной версии из репозиториев Nginx
Написать Ansible role для устаноки и настройки nginx конкретной версии из репозиториев Nginx

Cвязка Nginx-Nginx как ограничить доступ к бэкэнду?
Есть связка на двух разных серверах с установленным Nginx. Я хочу сделать чтобы доступ к бэкэнду был возможен только с фронтенда. ...

Почему NGINX на сервере с Linux выдает 502 ошибку, в то время как без NGINX все работает?
Приложение работает на express.js + socket.io + redis + mysql. Выложил сайт на тестирование на qa-стенд (14.x ubuntu server). На убунте...

26
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
24.06.2024, 15:23  [ТС]
Студворк — интернет-сервис помощи студентам
У меня сейчас по первому варианту работает. Клиентов много не будет, там чисто внутренний сервис на 4-6 клиентов максимум.
Логика для мультиплексирование не проблема, просто смысла не вижу - клиенты подключаться могут на весь день и их всего несколько штук. Плюс нужно чтоб инициатором общения могла быть любая сторона, а для этого надо держать открытый сокет (если я все правильно понимаю).
0
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
24.06.2024, 15:35
Все же непонятно зачем скрывать один application protocol за другим.
WebSocket - тот же TCP, только инициирование соединения происходит по http. Вообщем пробуйте, для начала бы какой-нибудь concept proof, что-ли, надо сделать, чтобы проверить работоспособность.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
24.06.2024, 16:08
Цитата Сообщение от a13428711 Посмотреть сообщение
Я думал можно будет через поддомены сделать, чтоб и интуитивно понятно было куда обращаемся и чтоб 100500 портов не открывать наружу
Так себе аргумент. Обычно все эти "один ip+port для разных доменов" делается с целью, чтобы не приходилось в url на стороне клиента указывать port. Если это не критично -- разнести по разным портам и не страдать.
0
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
24.06.2024, 17:07  [ТС]
Цитата Сообщение от IamRain Посмотреть сообщение
Вообщем пробуйте, для начала бы какой-нибудь concept proof, что-ли, надо сделать, чтобы проверить работоспособность
Так уже есть релизы клиента и сервера и через TCP отлично работает всё. Просто хотел спрятать за доменными именами.
Цитата Сообщение от Wolfdp Посмотреть сообщение
Так себе аргумент.
Может быть вы и правы и я перемудрил.
Плюсом еще вычитал где-то лет 5 назад, что нужно стараться открывать минимум портов на сервере. С сетями только сейчас начинаю плотно работать, а эта цитата из головы не выветрелась)
0
Эксперт .NET
 Аватар для Usaga
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,046
25.06.2024, 02:23
Цитата Сообщение от a13428711 Посмотреть сообщение
Плюсом еще вычитал где-то лет 5 назад, что нужно стараться открывать минимум портов на сервере.
А аргументация какая была? Я вот не вижу никаких ограничений, которые мешали бы мне открыть 100500 портов на сервере.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
25.06.2024, 11:22
Цитата Сообщение от Usaga Посмотреть сообщение
А аргументация какая была? Я вот не вижу никаких ограничений, которые мешали бы мне открыть 100500 портов на сервере.
Я подозреваю что возможно таки рекомендация звучала всё же так: "оставлять открытым из вне только необходимое, а всё остальное прятать за фаерволом". Такой подход действительно имеет смысл, вот только если нужно развернуть серверное приложение с точкой подключения из-вне -- проксировать только ради проксировани действительно нет смысла.
0
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
28.06.2024, 14:37  [ТС]
Цитата Сообщение от Wolfdp Посмотреть сообщение
"оставлять открытым из вне только необходимое, а всё остальное прятать за фаерволом"
Да, что-то подобное. У меня с вопросами безопасности пока на околонулевом уровне, следующее направление в очереди на изучение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.06.2024, 14:37

почему my $nginx = `nginx -t` сразу уходит в stdout
Здравствуйте. %cat perl_nginx.pl #!/usr/bin/perl -w use strict; my $ls = `ls -la`; my $nginx = `nginx -t`; %perl...

Сайт на чистом NGINX или APACHE + NGINX
Собственно в заголовке вопрос. Что лучше? Роутинг используя htaccess или все же через .vhost + роут через PHP По статьям - старым...

Nginx + FPM vs Nginx + mod_php
Есть ли разница в плане производительности между: Nginx + PHP-FPM и Nginx + Apache (mod_php) Мне шепнули, что сейчас...

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

Сервис для уведомлений. Ошибка на небольшом кол-ве клиентов. Сервис слишком занят, чтобы обработать запрос
Уже несколько дней не могу разобраться в чём причина. Код проекта для тестирования прилагаю. Конфигурация serviceThrottling настроена, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru