У меня есть доменное имя, скажем пример.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)