Каким образом можно настроить доступ к локальному сервису, работающему на нестандартном порту, используя доменное имя?

Добрый день! 

У меня есть следующая ситуация: 

- Домен <b>www.site.ru</b> делегирован на Cloudflare, и у меня есть три поддомена: <b>1.site.ru</b>, <b>2.site.ru</b> и <b>3.site.ru</b>.
- Локально у меня настроен сервер Apache2 с IP-адресом <b>127.0.0.1</b>, на котором работают три сервиса: <b>1</b> (HTTPS сайт), <b>2</b> (HTTPS сайт) и <b>3</b> (веб-интерфейс для сервиса на порту 0000).
- У меня статический IP <b>1.1.1.1</b>, и используется устройство MikroTik (модель не принципиальна).
- На MikroTik я настроил проброс портов с <b>1.1.1.1:80/443/0000</b> на <b>127.0.0.1:80/443/0000</b>. 

Таким образом, доступ к сервисам <b>1</b> и <b>2</b> по адресам <b>1.site.ru</b> и <b>2.site.ru</b> работает корректно. 

Однако, я сталкиваюсь с проблемой доступа к веб-интерфейсу <b>3.site.ru</b>. Он доступен только по адресам <b>127.0.0.1:0000</b> и <b>1.1.1.1:0000</b>, в то время как мне не удается настроить доступ через <b>3.site.ru</b> (или хотя бы <b>3.site.ru:0000</b>). 

Не могли бы вы подсказать, как решить эту проблему? Заранее спасибо!
  • 10 апреля 2025 г. 10:35
Ответы на вопрос 2
Добрый день!

Для настройки доступа к вашему локальному сервису через доменное имя, особенно если он работает на нестандартном порту, вам следует учесть несколько моментов. Вот пошаговая инструкция, как это можно сделать:

### 1. Настройка DNS в Cloudflare

Поскольку ваш домен делегирован в Cloudflare, вам необходимо убедиться, что для поддомена `3.site.ru` настроен DNS-запись типа A, указывающая на ваш статический IP-адрес `1.1.1.1`.

- Зайдите в панель управления Cloudflare.
- Перейдите в раздел DNS.
- Создайте новую запись типа A:
  - **Name**: `3`
  - **IPv4 address**: `1.1.1.1`
  - **Proxy status**: если вы хотите, чтобы Cloudflare обрабатывал ваш трафик, включите проксирование (значок облака будет оранжевым). Если это вызывает проблемы, вы можете временно отключить проксирование (значок облака будет серым), чтобы проверить, работает ли прямое подключение.

### 2. Настройка проброса портов в MikroTik

Вы упомянули, что у вас уже настроен проброс портов. Убедитесь, что проброс порта для `3.site.ru` настроен следующим образом:
- Убедитесь, что у вас есть правило NAT для перенаправления порта 0000 на `127.0.0.1:0000`.

Пример конфигурации NAT в MikroTik:

```bash
/ip firewall nat add chain=dstnat protocol=tcp dst-address=1.1.1.1 dst-port=0000 action=dst-nat to-addresses=127.0.0.1 to-ports=0000
```

### 3. Настройка Apache

Вам нужно настроить Apache для обработки запросов на поддомен `3.site.ru`. Проверьте конфигурацию вашего виртуального хоста в Apache. Убедитесь, что у вас есть подключение для `3.site.ru`, подобное этому:

```apache
<VirtualHost *:0000>
    ServerName 3.site.ru
    DocumentRoot /path/to/your/application
    <Directory /path/to/your/application>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    SSLEngine on
    SSLCertificateFile /path/to/your/certificate.crt
    SSLCertificateKeyFile /path/to/your/privatekey.key
</VirtualHost>
```

### 4. Проверка

Теперь попробуйте открыть `3.site.ru:0000` в браузере. Убедитесь, что порт 0000 открыт на вашем сервере и так же, что это не блокируется фаерволами как на MikroTik, так и на сервере Ubuntu с Apache.

### 5. Альтернативные решения

Если вы столкнулись с проблемами доступа через нестандартный порт, вы также можете рассмотреть возможности следующих решений:

- **Использование редиректов HTTP/HTTPS:** Например, перенаправить запросы с `3.site.ru` на стандартный порт 80 или 443. Например, перенаправление через Apache:
  
```apache
<VirtualHost *:80>
    ServerName 3.site.ru
    Redirect / https://3.site.ru:0000/
</VirtualHost>
```

- **Использование служебных портов (например, 80 или 443):** Если возможно, перенастройте ваш сервис на стандартный порт, что может значительно упростить процесс.

### Заключение

Следуя вышеизложенным шагам, вы сможете получить доступ к своему сервису через поддомен `3.site.ru`. Если возникнут дополнительные вопросы, не стесняйтесь обращаться!
Приветствую, если в  кратце, то для начала нужно настроить DNS в Cloudflare, обязательно без проксирования. Затем настроить Apache и добавить виртуальный хост для прокси запросов на порт 0000. Сделать проброс порта на MikroTik и настроить так же проброс порта 0000, и в оконцовке разрешить порт 0000 в брандмауэре. 
По идее доступ к сервису будет работать. Как то так =) Но это не точно =)
Похожие вопросы