Сделать сайт Apache, размещенный на локальном компьютере, доступным извне

Сделать сайт Apache, размещенный на локальном компьютере, доступным извне

У меня есть рабочий сервер apache2, на котором размещен сайт Moodle в локальной сети, доступ к которому можно получить через http://192.x.x.x/moodle. У меня также есть сервер Linux, расположенный между Интернетом и локальной сетью с реальным IP-адресом 124.x.x.x. Я хочу сделать сайт Moodle доступным из Интернета. Возможно ли это?

Локальный сервер apache2 имеет рабочую конфигурацию для обслуживания moodle.domain.com. Живой сервер Linux также имеет сервер apache2, размещающий domain.com. Оба работают под управлением Debian Linux

Я попытался выполнить перенаправление moodle.domain.comс файла 192.x.x.xработающего сервера Linux, /etc/hostsно domain.comпри доступе moodle.domain.comизвне я все равно получаю то же самое.

Когда я получаю доступ извне, я сначала настраиваю файл host на ноутбуке с Windows для перенаправления moodle.domain.comна реальный IP-адрес сервера Linux.

Что я здесь упускаю?

решение1

Мне удалось добиться работоспособности, реализовав обратный прокси-сервер Apache на работающем сервере Apache Linux.

Для тех, кто ищет такое же решение, вот фрагмент моего /etc/apache2/sites-enabled/000-default.conf:

<VirtualHost *:80>
        ServerName moodle.domain.com
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyPass / http://10.5.1.100:8080/
        ProxyPassReverse / http://10.5.1.100:8080/
</VirtualHost>

Локальный сервер Apache, на котором размещен сайт Moodle, должен прослушивать порт 8080:

<VirtualHost *:8080>
    ServerAdmin webmaster@local
    DocumentRoot /srv/www/moodle
    ServerName moodle.domain.com
    ServerAlias moodle.domain.com
    <Directory /srv/www/moodle>
           #Allowoverride all    ###Uncomment if required
    </Directory>
</VirtualHost>

Еще одна настройка Moodle, которую мне нужно было настроить, — это файл конфигурации Moodle /srv/www/moodle/config.php:

$CFG->wwwroot = 'http://moodle.domain.com';

Moodle изначально установил его $CFG->wwwroot = 'http://10.5.1.100/moodle';во время установки. Если у вас нет установки Moodle, то проигнорируйте эту часть

решение2

Прежде чем мы начнем, я хочу убедиться, что вы понимаете, что это не самый безопасный вариант. Особенно, если открывать порты маршрутизатора, поэтому, пожалуйста, убедитесь, что вы понимаете, что такое брандмауэр.

Поскольку у вас динамический IP (я предполагаю), вы не можете просто привязать его к своему домену. Это потому, что ваш IP будет меняться каждые пару часов.

Этот ответ основан на наиболее распространенных доступных вариантах маршрутизаторов.

  1. Вам необходимо найти свой сервер Apache в соединениях маршрутизатора и активировать переадресацию портов (80) или, если вы понимаете, что делаете, и у вас настроен правильный брандмауэр, вы можете просто открыть все порты маршрутизатора (я настоятельно рекомендую вам не делать этого, если у вас нет брандмауэра).
  2. Используйте бесплатный DNS-сервис, например Dyn DNS (большинство последних маршрутизаторов поддерживают его по умолчанию, просто проверьте настройки и настройте учетную запись).
  3. Создайте бесплатный DNS-поддомен.
  4. Создайте правило DNS (CNAME) из вашего основного домена и укажите его на созданный вами поддомен dyndns. Например, moodle.example.com -> trex-moodle.exampledyndns.com.
  5. Настройте Apache и добавьте поддомен dyndns.

Использование бесплатного DNS на вашем маршрутизаторе — лучший вариант, поскольку ваш маршрутизатор меняет IP-адрес каждые пару часов. Если вы используете такую ​​услугу, ваш домен DYN DNS всегда будет указывать на ваш домашний IP-адрес.

Редактировать

Что касается первого комментария, вам понадобится прокси nginx, работающий на вашем основном сервере linux. Nginx может использоваться для хостинга веб-сайта domain.comи moodle.domain.com, который размещен на другом сервере в той же сети.

Убедитесь, что вы можете получить доступ к сайту Moodle с вашего сервера Linux. (Используйте ping IP)

Теперь в вашем nginx вам понадобится следующая конфигурация:

server {
    listen       80;
    server_name domain.com;

        root /your/domain.com/path/goes/here ;
}

server {
    listen       80;
    server_name  moodle.trex.com;

    location / {
        proxy_pass http://192.X.X.X:80; #Your apache2 server local IP address
    }
}

Чтобы это работало, оба сервера Linux и ваш сервер Apache2 должны находиться в одной сети 192.XXX.

Связанный контент