Имя: Пароль:
1C
1С v8
Проблема с веб сервером
0 alf2006x
 
01.08.22
00:03
Всем доброй ночи.

Год назад сделал крутую систему ("сам себя не похвалишь..."), но она год лежала непотребная.
И вот, когда понадобилась - выяснилось что не работает. Починить нужно c-срочно, а предметных знаний
явно не хватает. Что и где надо чинить - не догоняю. Большая просьба помочь. Желательно сегодня.

Амбула.

Есть рабочая ИБ, на сервере в "Стек Телекоме". Доступ туды только с разрешения Стек Телекома. Тут всё норм. Безопасность превыше всего!
Есть подножный сервер в офисе с разрешённым доступом к "телу" (к серверу с базой).

Задача (ранее уже решённая): всем желающим пользоваться нашим АПИ даётся доступ к офисному серверу по https (автообновляющийся SSL от LetsEncrypt).
Далее все запросы пробрасываются по обычному http на сервер с базой и ответы возвращаются в обратном порядке до пользователя.

Айтишники в июне меняли провайдера на офисном сервере, соответственно поменялся и его айпишник
(но сейчас скорее всего проблема уже не в этом, так как вроде все маршруты поправлены)

В итоге сейчас вот что.

Проброс https - http работает. На сервере с базой в нужном месте лежит файл "api.1cws".
Полное содержание файла такое:
<?xml version="1.0" encoding="UTF-8"?>
<service
namespace="http://api.mysite.ru"
name="API"
connectString="Srvr=&quot;localhost&quot;;Ref=&quot;MyBase&quot;;usr=&quot;MyApiUser&quot;;pwd=&quot;MyPass&quot;"/>

Снаружи, с любого внешнего места файл  https://api.mysite.ru/v1.0/api.1cws?wsdl  видится великолепно.
Без проблем загружается в WS-ссылки. Все очень замечательно.

Но методы никак не хотят вызываться. Просто зависает и пишет что ошибка таймаута.

Строка:
WSПрокси = WSСсылки.WSСсылка1.СоздатьWSПрокси("https://api.mysite.ru", "API", "APISoap12",,,Новый ЗащищенноеСоединениеOpenSSL);
создаёт проксю

А вот следующая строка:
WSПрокси.Ping()
зависает наглухо и вылетает через 10-20 секунд с ошибкой:
"При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса:  {https://api.mysite.ru}:API:Ping()
по причине:
При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка работы с Интернет:  Превышено время ожидания
по причине:
Ошибка работы с Интернет:  Превышено время ожидания"

Подозреваю что трабл в аутентификации. Но эт не точно.

Помогите кто чем сможет... оч не хочу откатываться от такой модной схемы работы.
Ну хотя бы подскажите методу как и где почитать про ошибку чуть побольше информации.
А то тут ваще непонятно что именно надо гуглить...
1 ДедМорроз
 
01.08.22
00:50
Во-первых,скачиваем файл описания web-сервиса и смотрим в нем точки подключения.
Если при пробросе серверу не дали в заголовках реальный ip-адрес,то в точках подключения уепзан внутренний ip-адрес сервера,на который идет проброс и из-вне он просто недоступен.
Просто,согласно описанию в файле wsdl могут быть точки подключения на других адресах,то,что 1с так не умеет,не значит,что создатели формата wddl(которые про 1с не слышали)не сделали его универсальным.
По-мойму,заголовок ProxyRealIp,сейчас,к сожалению точно его не помню,но в инете можно найти.
2 ДедМорроз
 
01.08.22
00:53
Через заголовки также нужно объяснить,что соединение https,хотя,реальное соединение к серверу http.
Я просто завтра могу написать,что пишется доя проброса в nginx,но не факт,что у вас через него сделано.
3 alf2006x
 
01.08.22
01:30
Самое главное забыл сказать: оба сервера на Win Server 2012 R2 + соответственно IIS

А "точка подключения" - это вот это?

<service name="API">
<port name="APISoap" binding="tns:APISoapBinding">
<documentation>
<wsi:Claim xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" conformsTo="http://ws-i.org/profiles/basic/1.1"/>
</documentation>
<soapbind:address location="http://ххх.ххх.ххх.хх/v1.0/api.1cws"/>
</port>
<port name="APISoap12" binding="tns:APISoap12Binding">
<soap12bind:address location="http://ххх.ххх.ххх.хх/v1.0/api.1cws"/>
</port>
</service>

Если да, то тут у меня "ххх.ххх.ххх.хх" - это вполне себе реальный айпишник того самого сервера с БД.
Но по идее, он вызывается после проброса (это, опять же, снова не точно).
Год назад в такой конфигурации точно работало.

И, кстати, адрес http://ххх.ххх.ххх.хх/v1.0/api.1cws - доступен снаружи (хм...)
И, кстати, он доступен только по http.
Возвращает  /v1.0/api.1cws?wsdl
4 ДедМорроз
 
01.08.22
23:32
Я бы чем-то ткнулся из-вне в этот адрес и посмотрел бы,что там реально.
5 ДедМорроз
 
01.08.22
23:34
Точка подключения внутри wsdl,там где описание методов.
Просто посмотри скачанный wsdl - какие там есть адреса и методы.
6 Деспот_1С
 
02.08.22
08:36
(0) В IIS наверное поменяли кучу всего, верни все в IIS в исходное положение, когда все работало
7 Деспот_1С
 
02.08.22
08:37
(6) Там в IIS 2 значения надо поменять. Одно из которых надо поставить в true, какое не помню, гугли
8 alf2006x
 
02.08.22
09:21
Да, после того, как всё сломалось поменял кучу всего в попытке всё настроить.
Хорошая новость в том, что пришлось всё-таки сделать мега-костыль. Теперь у меня на офисном серваке пустая база "пробрасыватель запросов". ))
Народ начал работать.
Теперь спокойно буду гуглить и пробовать.