Я нахожусь в очень необычной ситуации, и я потратил почти 8 часов, пытаясь понять, в чем проблема.
Установка
У меня есть сервер под управлением Debian 11. Внутри этого сервера у меня установлена виртуальная машина CentOS с KVM. Виртуальная машина размещает сложное веб-приложение за сервером Apache. Сетевым интерфейсом KVM является NAT, поэтому для доступа к веб-приложению я настроил правила переадресации портов, используя либвирт
крючки, как описано здесь:
https://wiki.libvirt.org/page/Networking#Forwarding_Incoming_Connections
Моя установка перенаправляет любые входящие соединения на порт 443 на сервер Apache на виртуальной машине, и это работает нормально.
Я также настроил сервер Nginx на хост-компьютере, так как собираюсь использовать его в качестве обратного прокси-сервера. Я буду размещать другое приложение на хост-сервере через порт 9000. Используя Nginx для обратного прокси-сервера, я планирую перенаправить все запросы на https://example.com
к виртуальной машине и все запросы к https://example.com/app/
к веб-приложению, работающему на порту 9000.
Эта проблема
Я установил сервер Nginx после настройки виртуальной машины и соответствующих правил переадресации портов. Но когда я пытаюсь запустить стартовую страницу сервера Nginx, она недоступна. Я понимаю, что порт 443 перенаправляется на виртуальную машину. Итак, я пытаюсь загрузить с http://example.com
ожидая, что он загрузит стартовую страницу Nginx через порт 80. Но он продолжает сообщать, что веб-сайт недоступен.
Что я пробовал до сих пор?
Я подозревал, что основной причиной здесь могут быть правила переадресации портов от хоста к гостю. Поэтому я изменил правило переадресации портов с порта 443 на 8000. Таким образом, любые запросы к порту 8000 будут перенаправляться на сервер Apache на виртуальной машине. Но после этого порт 443 тоже стал недоступен.
Я попытался полностью очистить iptables, как описано здесь:
Очистить и сбросить iptables в Debian
Но все равно сервер Nginx остается недоступным.
Также, очень странно, после очистки iptables, когда я пытаюсь получить доступ к приложению, работающему на порту 9000, с помощью http://example.com:9000
я получаю 400 Ошибка неверного запроса
и когда я меняю протокол на https
, страница становится недоступной.
Любой совет будет очень полезен. Спасибо.