Рейтинг:0

Успех обратного прокси-сервера nginx в локальной сети, но сбой в общедоступной сети

флаг gi

Я изучаю, как использовать обратный прокси-сервер на основе имен серверов с nginx. У меня все работает на 100% в сети домашнего офиса. Но когда я открываю домашний брандмауэр и перенаправляю внешний трафик на мой обратный прокси-сервер в моем доме, это похоже на то, что nginx не распознает правила имени сервера и продолжает использовать правило по умолчанию. Итак, мой вопрос: как заставить обратный прокси-сервер с именами серверов работать с внешним трафиком?

Чтобы описать, что я имею в виду, я покажу Сценарий успеха и Неудачный сценарий.

СЦЕНАРИЙ УСПЕХА - Обратный прокси трафика домашней сети

Этот сценарий работает идеально. У меня дома есть компьютер. Компьютер имеет IP-адрес 192.168.0.30. На компьютере установлен nginx. Затем я добавил эти две записи в свой /и т.д./хосты

192.168.0.31 home1.john.com
192.168.0.32 home2.john.com

Затем я добавил это в свой /etc/nginx/nginx.conf

транслировать {
    включить stream_conf.d/*.conf;
}

Затем я сделал этот файл /etc/nginx/stream_conf.d/*.conf:

log_format mqtt '$remote_addr [$time_local] $protocol $status $bytes_received '
                '$bytes_sent $upstream_addr';

карта $ ssl_preread_server_name $ имя {
    home1.john.com hive_mq;
    home2.john.com hive_mq2;
    по умолчанию hive_mq;
}

вышестоящий hive_mq {
    сервер 192.168.0.31:1883;
    зона tcp_mem 64k;
}

вышестоящий hive_mq2 {
    сервер 192.168.0.32:1883;
    зона tcp_mem 64k;
}

сервер {
    слушать 1883;
    прокси_пароль $имя;
    proxy_connect_timeout 1 с;

    ssl_preread включен;
    журнал_доступа /var/log/nginx/mqtt_access.log mqtt;
    журнал_ошибок /var/log/nginx/mqtt_error.log;
}

Затем я запускаю эти команды:

nginx # запускает nginx
nginx -s reload # убедитесь, что я использую последние файлы conf

mosquitto_pub -h home1.john.com -t hello/world -m 'test to home1.john.com server' # 192.168.0.31 успешно получает сообщение, а 192.168.0.32 успешно игнорирует это сообщение
mosquitto_pub -h home2.john.com -t hello/world -m 'test to home2.john.com server' # 192.168.0.32 успешно получает сообщение, а 192.168.0.31 успешно игнорирует

Все абсолютно идеально.

СЦЕНАРИЙ ОШИБКИ - Обратный прокси внешнего трафика

Я подошел к своему WiFi-маршрутизатору и включил переадресацию портов. Я возьму любой внешний трафик с порта 1883 и перенаправлю его на IP-адрес 192.168.0.30 (мой обратный прокси-компьютер с nginx) через порт 1883.

Затем я поехал на своей машине к дому моего друга и взял его ноутбук. Я добавил эти две записи в его ноутбук. /и т.д./хосты файл:

# предположим, что 72.142.34.203 - мой домашний общедоступный IPv4-адрес
72.142.34.203 home1.john.com
72.142.34.203 home2.john.com

Затем я выполнил следующие команды на его ноутбуке:

mosquitto_pub -h home1.john.com -t hello/world -m 'test to home1.john.com server' # 192.168.0.31 успешно получает сообщение, а 192.168.0.32 успешно игнорирует это сообщение

mosquitto_pub -h home2.john.com -t hello/world -m 'test to home2.john.com server' # НЕВЕРНЫЙ РЕЗУЛЬТАТ - 192.168.0.31 получил это сообщение, а 192.168.0.32 не получил это сообщение

Почему 192.168.0.32 не удалось получить тест на сервер home2.john.com из второй команды? Как будто обратный прокси-сервер nginx не распознает имя сервера... эта информация потеряна, когда я сделал переадресацию портов на своем маршрутизаторе? Или я что-то неправильно понял? Как заставить обратный прокси-сервер с именем сервера работать с внешним трафиком в мою домашнюю сеть

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.