Apache виртуальная проблема хоста или проблема DNS?

Я отправил этот вопрос прежде, но я предполагаю, что это не было ясно способ, которым я записал это или что-то. Таким образом, я удалил его, и здесь это снова с таким количеством информации, как я могу думать.

Я создал сервер с помощью старых компьютерных частей размера лощины 2400. Я установил Ubuntu 16.04.6 LTS с Linux 4.15.0-72-универсальное ядро. Я установил mysql-сервер, apache2, certbot, pyton3, python-apache-certbot, php7.0, ssh, vsftpd и затем передал требуемые порты для того, что я установил на внутреннем IP (192.168.1.23).

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


Вот виртуальный файл хоста:

    <IfModule mod_ssl.c>
<VirtualHost 192.168.1.23:443>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/domain.com/public_html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
ServerName domain.com
SSLCertificateFile /etc/letsencrypt/live/domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
~

Следует иметь в виду, что это - рабочий виртуальный хост.

То, когда я изменяю это на доменное имя (домен com:443), поскольку это должно быть это, не работает.

(Та же проблема о порте 80.)

Мне нужен внутренний DNS, или это что-то еще?

Я пытался установить, связывают, но или я испортил его ужасно, или это не имело место... или оба... склоняющиеся больше к обоим честно.

так или иначе я надеюсь, что это - достаточно информации, и кто-то может пролить некоторый свет на это. Я хотел бы смочь разместить другой сайт на этом сервере.

3
задан 7 January 2020 в 03:08

3 ответа

Таким образом, после большого количества времени и исследования я понял это. Было много проблем, но основное разрешение было, например, это будет <virtualhost 192.168.1.23 askubuntu.com:80> Это работает теперь с несколькими виртуальными хостами.

У меня действительно были некоторые проблемы, служащие http по порту 443 и другие проблемы. Я волновал переформатирование всего диска и переустановку всего после того, как я понял это.

Выполнение как очарование теперь!

Спасибо за всю справку!

0
ответ дан 12 January 2020 в 12:36

ServerName директива используется для определения доменного имени по умолчанию, которое будет принято виртуальным хостом (и ServerAlias для синонимичного из доменного имени по умолчанию). Также Вы не должны указывать сумматоры IP сетевого интерфейса (или доменное имя) в <VirtualHost> тег, в то время как Вы, не имеет никаких специальных целей - т.е. служит другому содержанию для того же доменного имени, к которому получают доступ IP-адреса другого сервера и т.д.

<IfModule mod_ssl.c>

    <VirtualHost _default_:443>

        ServerName example.com
        ServerAlias www.example.com www2.example.com

        # Other configuration directives...

    </VirtualHost>

</IfModule>

Если нет FQDN, который указывает на общедоступный IP-адрес Вашего сервера, необходимо установить локальный DNS, или необходимо отредактировать hosts файлы Ваших устройств локальной сети для доступа к (веб-) серверу доменным именем в LAN. Для получения дополнительной информации считайте следующие ссылки:

0
ответ дан 12 January 2020 в 12:36

ServerName директива только используется Apache для знания, какой домен это выполняет как (и в некоторых случаях это используется для дифференциации между несколькими VirtualHosts в зависимости от домена). Это действительно не имеет никакого эффекта на клиенты, пытающиеся разрешить домен.

То, что изменяет Вас, должно сделать, полностью зависит от того, на что похожа Ваша установка.

Если Вы хотите использовать домен, все еще необходимо сказать клиентские компьютеры, на что ПК он указывает. Это может или быть сделано через систему hosts- файл (легче установить, специально для тестирования, но стычка для установки для каждого компьютера), или через собственный DNS-сервер (немного тяжелее, чтобы установить и разобраться, но более гибкий в конце). (Это не применяется при использовании "официального" домена, не чего-то, что Вы изобрели сами. Если Вы не хотите разрешить domain.com к своему внутреннему IP в то время как в Вашей локальной сети.)

Чтобы проверить, является ли сам домен установкой правильно, проверьте свой общедоступный IP (или локальный IP через ifconfig -a, В зависимости от Вашей установки) на сервере через страницу как ifconfig.co и сравнивают его с IP, возвращенным также dig domain.com или nslookup domain.com. Если они возвращают то же, Ваш домен правильно настраивается для указания на общедоступный IP. Если они не делают, необходимо будет измениться, где домен указывает на, но я не могу действительно помочь с этим.

Если Вы хотите получить доступ к странице из общедоступного Интернета, необходимо будет волноваться о NAT. NAT (или "Преобразование сетевых адресов") обрабатывает коммуникацию нескольких внутренних устройств через единственный общедоступный IP (вероятно, что подобная вещь настраивается в Вашем случае). Ваш маршрутизатор в настоящее время понятия не имеет, к какому компьютеру он должен отправить входящие пакеты на порте 80/443, который мог бы быть одной возможной причиной Ваших проблем. Для установки его правильно ищите, как установить "Перенаправление портов" на определенном маршрутизаторе и настроить его так, чтобы это отправило все входящие пакеты TCP на порте 80 и 443 к тому же порту на сервере в локальной сети.

Вы также, возможно, должны были бы обратить внимание на директиву VirtualHost, куда Вы конкретно помещаете свой локальный IP (хотя я не могу вообразить это являющийся проблемой в Вашей текущей установке, другие причины более вероятны). Это в основном говорит, что Apache к только когда-либо слушает входящие соединения на том определенном IP. После того как Вы настраиваете NAT, это должно быть прекрасным, так как запросы отправлены к интерфейсу Вашей локальной сети. В случае, если Вы все еще сталкиваетесь с проблемами после работы через другие шаги, Вы могли бы хотеть попытаться заменить тем IP-адресом со звездочкой, заставляя Apache послушать во всех интерфейсах. Это удалило бы другого (если очень маленький) причина возможных ошибок.

0
ответ дан 12 January 2020 в 12:36

Другие вопросы по тегам:

Похожие вопросы: