При стандартной публикации информационной базы 1С на веб-сервере (например, Microsoft IIS) результирующий URL-адрес для внешних пользователей часто имеет вид http://домен:порт/имя_базы. Однако для удобства пользователей и красивого оформления внешнего сервиса требуется, чтобы база открывалась напрямую по чистому доменному адресу http://domain.ru или https://domain.ru. Разберем по шагам, как избавиться от номера порта и имени базы в строке браузера.
Проанализируем правила работы протоколов HTTP и HTTPS в браузерах. Браузеры скрывают номер порта только тогда, когда используются стандартные порты назначения: 80 для незащищенного протокола HTTP и 443 для защищенного протокола HTTPS. Если веб-сервер слушает нестандартный порт (например, 2556 или 8080), браузер вынужден явно отображать его в строке адреса.
Для скрытия порта выполним следующие действия:
Рассмотрим наиболее надежный и производительный вариант публикации, при котором отпадает необходимость в дополнительных перенаправлениях.
C:\inetpub\1c_base).default.vrd будет сформирован непосредственно в корне веб-узла.При таком подходе обращения к корню домена сразу обрабатываются модулем расширения веб-сервера 1С без смены URL в браузере.
Если база уже опубликована в существующий виртуальный каталог (например, /trade), разберем, как автоматически перенаправлять пользователей, перешедших по чистому имени домена.
/имя_базы.http://домен.ru/ веб-сервер будет отдавать заголовок перенаправления (301/302), и браузер автоматически перейдет на http://домен.ru/имя_базы/.В качестве легковесной альтернативы модулю IIS можно разместить в корневой папке сайта файл index.html со скриптом перенаправления:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0; url=/имя_базы/">
</head>
<body>
</body>
</html>
Рассмотрим вариант архитектуры с установкой обратного прокси-сервера (Reverse Proxy) перед IIS, что часто применяется для распределения нагрузки, гибкой маршрутизации и терминации SSL-сертификатов.
server {
listen 80;
server_name domain.ru;
location / {
proxy_pass http://127.0.0.1:8080/имя_базы/;
proxy_set_header Host $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 $scheme;
}
}
В такой схеме внешний клиент видит только адрес http://domain.ru, а Nginx прозрачно транслирует трафик во внутреннюю структуру IIS.
Проанализируем особенности поведения различных клиентов платформы 1С:
buh.domain.ru и trade.domain.ru), создав в IIS для каждого поддомена отдельный сайт с собственной привязкой.