У меня есть apache за обратный прокси-сервер NGINX, который поддерживает SSL. Мой внутренний сервер Apache прослушивает только HTTP, поэтому я использую:

proxy_pass http://realip:8888;

однако это нарушает работу сайта, поскольку все URL-адреса переходят на http, а chrome не позволяет HTTP загружаться через HTTPS. Как я могу установить заголовок как «https://» при отправке через "http" на внутренний сервер Apache?

1 ответ1

0

Лучший способ исправить это с помощью бэкэнда. (Не зная ничего о бэкэнд-приложении, я постараюсь дать общий ответ.)
Вот 2 варианта:

  1. Сконфигурируйте или измените внутреннее веб-приложение, чтобы использовать "https" при создании ссылок вместо определения фактически используемого протокола.

  2. (лучший вариант) Настройте или измените внутреннее веб-приложение для использования заголовка X-Forwarded-Proto при построении ссылок. Этот заголовок должен быть установлен в прокси nginx следующим образом: proxy_set_header X-Forwarded-Proto $scheme; Некоторые установки, такие как пакеты Ubuntu, предоставляют это в фрагменте proxy_params и могут быть включены следующим образом: 'include proxy_params'.

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

Если внутреннее веб-приложение создает ссылки на основе протокола, используемого для связи с ним, например, $_SERVER['SERVER_PROTOCOL'] для php, то изменить это невозможно только с помощью прокси-сервера nginx.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .