У меня есть сервер IIS, на котором размещено несколько сайтов и API. Эти сайты включают экземпляры Confluence и Jira. Эти продукты фактически используют свои собственные веб-серверы, поэтому модули маршрутизации запросов приложений и переопределения URL-адресов используются для реверсирования входящих запросов прокси на documents.example.com' and 'jira.example.com' to
локальный: 8080and
localhost: 8090` - где запущены экземпляры confluence и jira.
Теперь я пытаюсь настроить обратный прокси-сервер для небольшого api (minio) сервера простого хранилища (s3), который размещен на localhost: 9000, но протокол s3 требует, чтобы заголовок хоста был частью его кодов аутентификации сообщений.
Однако, когда маршрутизация запросов приложений перенаправляет запрос в соответствии с правилом перезаписи URL-адреса, она также перезаписывает заголовок узла, чтобы отразить новый заголовок назначения.
Это можно отключить, установив system.webServer.proxy:preserveHostHeaders
но только в ApplicationHost.config, поскольку ARR запускает сервер, а не уровень сайта.
Итак, теперь у меня есть загадка:
Если я установлю этот параметр, тогда REST API, которые используют заголовок хоста в своем MAC-адресе, могут работать, но Confluence и Jira в качестве поддерживаемой конфигурации обратного прокси-сервера ожидают перезаписанные заголовки хоста.
Для справки, этот набор позволяет сохранять заголовки хоста.
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost
Я борюсь с той же проблемой. У меня есть решение, которое мне не нравится (и, держу пари, оно вам тоже не понравится), но оно работает.
Если вы включите preserveHostHeaders, вы можете добавить правила перезаписи исходящих URL-адресов для переназначения всех случаев, когда вы делать хотите заменить заголовки хоста.