Рейтинг:0

Nginx перенаправляет весь трафик на все порты, кроме порта 80

флаг ru

У меня есть доменное имя, скажем пример.com зарегистрирован в Dynadot. У меня есть это, вместе с поддоменами www.example.com и cloud.example.com указать на мой IP-адрес через записи A. Я настроил несколько серверов, доступных по этому доменному имени. Например, к моему FTP-серверу можно получить доступ с помощью пример.ком:21. У меня есть сервер Node.js, работающий на порту 80, и Nextcloud сервер, работающий на порту 85. Последнее, что я настроил, — это сервер Nginx, который прослушивает порт 80. Вот моя конфигурация Nginx:

сервер {
    слушать 80;
    имя_сервера cloud.example.com;

    место расположения / {
        proxy_pass http://example.com:85;
    }
}

сервер {
    слушать 80;
    имя_сервера www.example.com;

    место расположения / {
        прокси_пароль http://192.168.1.31;
    }
}

сервер {
    слушать 80;
    имя_сервера пример.com;

    место расположения / {
        прокси_пароль http://192.168.1.31;
    }
}

Что делает эта конфигурация:

  • Если пользователь переходит на пример.com или же www.example.com, он перенаправляет их на мой сервер Node.js.

  • Если пользователь переходит на cloud.example.com, он перенаправляет их на мой сервер Nextcloud, который также доступен из пример.ком:85.

  • Если пользователь хочет подключиться к другому серверу, работающему на другом порту, он может использовать example.com:<порт>

Это прекрасно работает, но моя единственная проблема в том, что мой провайдер блокирует входящий трафик для порта 80!

Я часами пытался найти обходной путь, и мой единственный вариант — использовать GoDaddy. Я могу разместить свой сервер Nginx на GoDaddy, что указывает пример.com и www.example.com на мой сервер Node.js и точки cloud.example.com на мой сервер Nextcloud. Это сработает, но это означает, что пример.comНастройки DNS необходимо изменить на запись A, указывающую на серверы GoDaddy. Все это будет работать нормально, но это означает, что я больше не могу получить доступ ни к одному из моих других серверов, таких как мой FTP-сервер, потому что пример.com:21 больше не будет указывать на <мой IP>:21, но <IP-адрес сервера GoDaddy>:21.

Я подумал, что для решения этой проблемы я мог бы настроить свой сервер Nginx так, чтобы он делал то же, что и раньше, но если пользователь переходит на пример.com с ЛЮБЫМ портом, кроме порта 80, он перенаправит соединение на <my IP>:<port>. Таким образом, все остальные мои серверы, такие как FTP-сервер, будут по-прежнему доступны через пример.com:21, но порт 80 не будет заблокирован, поскольку сервер Nginx, использующий порт 80, размещен на GoDaddy.

Я не знаю, возможно ли это с Nginx.Если да, то как будет выглядеть конфигурация? Если это не так, какие еще варианты у меня есть? (Кроме покупки бизнес-плана моего интернет-провайдера по разблокировке порта 80)

djdomi avatar
флаг za
оффтоп: Вопросы по Server Fault должны касаться управления системами информационных технологий в бизнес-среде. Вопросы о домашних и конечных компьютерах можно задавать в Super User,
флаг us
Вы не должны использовать FTP, это угроза безопасности.
Denes Garda avatar
флаг ru
@TeroKilkanen Зачем вообще упоминать об этом? В моем вопросе FTP-сервер был просто примером. Комментарий не по теме.
флаг us
Предоставление надежных советов по безопасности всегда актуально.

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

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