Почему 127.0.0.1:80 не работает в виртуальном хосте apache?

Я могу обойти это, но я хотел бы лучше понять, что происходит.

Используя Apache 2.2 на Ubuntu, в локальной среде разработки, виртуальный хост с *:80 в качестве адреса работает, но 127.0.0.1:80 не работает. Не работает и localhost:80. У меня есть только один файл .conf с виртуальными хостами, помимо основного файла appache2.conf. Вот что находится в этом отдельном файле vhosts:

<VirtualHost CCNM-378B:80 # Не работает. (CCNM-378B - это то, что 'hostname' из командной строки)

<VirtualHost 127.0.0.1:80 # Не работает.

<VirtualHost localhost:80 # Не работает.

<VirtualHost *:80 # РАБОТАЕТ

.

ServerName localhost

В etc/hosts у меня есть:

127.0.0.1 localhost

в журнале access.log написано:

127.0.0.1:80 ::1 - - [24/Mar/2022:16:31:12 -0600] "GET /favicon.ico HTTP/1.1" 404 487 "http://localhost/ideatree/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.83 Safari/537.36"

В apache2.conf у меня есть:

ServerName 127.0.0.1

#ServerName localhost

Но ни то, ни другое, похоже, не имеет значения.

Приложение, которое обслуживает Apache, является приложением Django.

В документации Apache говорится о разрешении имен vhost, но не объясняется, почему это происходит, поскольку базовый apache2.conf определяет '127.0.0.1' как ServerName, но это не распознается в VirtualHost.

Если VirtualHost не указывает ServerName, имя сервера будет унаследовано от базовой конфигурации сервера.

Ну ... 127.0.0.1 и localhost, вероятно, работают. Но они означают прослушивание запросов на IP-адресе, с которым могут связаться только приложения, работающие на самом сервере.

Но *:80 работает, потому что это означает слушать на всех настроенных IP-адресах этого хоста (грубо говоря).

Вероятно, вам нужно прочитать, что на самом деле означает адрес loopback 127.0.0.1; смотрите https://simple.wikipedia.org/wiki/Loopback, например.

Вернуться на верх