Назад | Перейти на главную страницу

VirtualHost не работает с несколькими интерфейсами

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

Я последовал за этот учебник, чтобы заставить работать несколько интерфейсов.

Что случилось: На сайте должно отображаться /var/www/mydomain/index.html, но вместо этого он показывает /var/www/html/index.html.

Что я пробовал: Использование *: 80 в VirtualHost, что работает, но цель состоит в том, чтобы иметь несколько VirtualHosts с разными IP / интерфейсами. Удаление порта из VirtualHost: ничего не делает. Изменение Listen 80 к Listen 92.168.1.231:80, который терпит неудачу с Cannot assign requested address: AH00072: make_sock: could not bind to address 92.168.1.231:80. Это беспокоит, и я не нашел объяснения тому, что происходит. Больше ничего не слушает порт, и если я просто слушаю все 80 портов, он работает нормально.

Информация о моей конфигурации:

/ sbin / ifconfig

eth0: flags = 4163 MTU 1500
inet 192.168.1.231 сетевая маска 255.255.255.0 широковещательная передача 192.168.1.255
inet6 fe80 :: f816: 3eff: fee7: b528 prefixlen 64 scopeid 0x20
ether fa: 16: 3e: e7: b5: 28 txqueuelen 1000 (Ethernet)
Пакеты RX 8812 байт 6501811 (6,2 МБ)
Ошибки RX 0 сброшено 0 переполнений 0 кадр 0
Пакеты TX 3884 байта 331594 (323,8 КБ)
Ошибки передачи 0 сброшены 0 переполнения 0 несущей 0 коллизий 0

eth1: flags = 4163 MTU 1500
inet 192.168.1.232 сетевая маска 255.255.255.0 широковещательная передача 192.168.1.255
inet6 fe80 :: f816: 3eff: fea1: e658 prefixlen 64 scopeid 0x20
ether fa: 16: 3e: a1: e6: 58 txqueuelen 1000 (Ethernet)
Пакеты приема 10623 байта 788238 (769,7 КБ)
Ошибки RX 0 сброшено 0 переполнений 0 кадр 0
Пакеты TX 5290 байт 1647702 (1,5 МБ)
Ошибки передачи 0 сброшены 0 переполнения 0 несущей 0 коллизий 0

eth2: flags = 4163 MTU 1500
inet 192.168.1.233 сетевая маска 255.255.255.0 широковещательная передача 192.168.1.255
inet6 fe80 :: f816: 3eff: fead: 8432 prefixlen 64 scopeid 0x20
ether fa: 16: 3e: ad: 84: 32 txqueuelen 1000 (Ethernet)
Пакеты RX 6520 байт 396490 (387,1 КБ)
Ошибки RX 0 сброшено 0 переполнений 0 кадр 0
Пакеты TX 51 байт 4973 (4,8 КБ)
Ошибки передачи 0 сброшены 0 переполнения 0 несущей 0 коллизий 0

eth3: flags = 4163 MTU 1500
inet 192.168.1.234 сетевая маска 255.255.255.0 широковещательная передача 192.168.1.255
inet6 fe80 :: f816: 3eff: fe4a: 8dc7 prefixlen 64 scopeid 0x20
ether fa: 16: 3e: 4a: 8d: c7 txqueuelen 1000 (Ethernet)
Пакеты RX 33438 байт 3106902 (2,9 МБ)
Ошибки RX 0 сброшено 0 переполнений 0 кадр 0
Пакеты TX 26161 байт 16106821 (15,3 МБ)
Ошибки передачи 0 сброшены 0 переполнения 0 несущей 0 коллизий 0

lo: flags = 73 MTU 65536
inet 127.0.0.1 маска сети 255.0.0.0
inet6 :: 1 prefixlen 128 scopeid 0x10
loop txqueuelen 1 (локальный шлейф)
Пакеты RX 1992 байтов 199852 (195,1 КБ)
Ошибки RX 0 сброшено 0 переполнений 0 кадр 0
Пакеты TX 1992 байтов 199852 (195,1 КБ)
Ошибки передачи 0 сброшены 0 переполнения 0 несущей 0 коллизий 0

sudo httpd -S

Конфигурация VirtualHost:
92.168.1.231:80 www.mydomain.com (/etc/httpd/conf.d/sites.conf:1)
ServerRoot: "/ etc / httpd"
Корень основного документа: "/ var / www / html"
Основной журнал ошибок: "/ etc / httpd / logs / error_log"
Прокси-сервер Mutex: using_defaults
Mutex authn-socache: using_defaults
Мьютекс по умолчанию: dir = "/ run / httpd /" механизм = по умолчанию
Mutex mpm-accept: using_defaults
Mutex authdigest-opaque: using_defaults
Mutex прокси-балансировщик-шм: using_defaults
Карта перезаписи мьютекса: using_defaults
Mutex authdigest-client: using_defaults
PidFile: "/run/httpd/httpd.pid"
Определить: DUMP_VHOSTS
Определить: DUMP_RUN_CFG
Пользователь: name = "apache" id = 48
Группа: name = "apache" id = 48

кот /etc/httpd/conf.d/sites.conf

<VirtualHost 92.168.1.231:80>  
    ServerName www.mydomain.com  
    ServerAlias mydomain.com  
    DocumentRoot "/var/www/mydomain/"  
    ErrorLog "/var/log/httpd/mydomain/error_log"  
    TransferLog "/var/log/httpd/mydomain/access_log"  
</VirtualHost>  

sudo netstat -pntl (при наличии Listen 80 в httpd.conf и запущенном Apache)

Active Internet connections (only servers)  
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      1191/memcached  

tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd  

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1221/sshd  

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2090/master  

tcp6       0      0 :::3306                 :::*                    LISTEN      1386/mysqld  

tcp6       0      0 ::1:11211               :::*                    LISTEN      1191/memcached  

tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd  

tcp6       0      0 :::80                   :::*                    LISTEN      8094/httpd  

tcp6       0      0 :::22                   :::*                    LISTEN      1221/sshd  

tcp6       0      0 ::1:25                  :::*                    LISTEN      2090/master

httpd.conf в значительной степени ванильный, за исключением изменения адреса электронной почты администратора, удаления автоиндексов из корня основного документа и установки имени сервера.

В конфигурации основного сервера у вас должно быть:

Listen 80

Это указывает apache на прослушивание на всех интерфейсах (и, следовательно, на всех IP-адресах). Измените его только в том случае, если вы не хотите, чтобы apache прослушивал все интерфейсы / IP-адреса.

Ваш VHosts должен быть настроен следующим образом:

<VirtualHost 192.168.1.231:80>
  ServerName mydomain1.com
  DocumentRoot /var/www/mydomain1
  ...
</VirtualHost>
<VirtualHost 192.168.1.232:80>
  ServerName mydomain2.com
  DocumentRoot /var/www/mydomain2
  ...
</VirtualHost>

Также проверьте, что ваш локальный DNS-сервер или /etc/hosts файл указывает на правильный IP-адрес.

У меня не было /etc/hosts настроен правильно, но это не помогло. Я переключился с виртуальных хостов на основе IP на доменные, и это было исправлено волшебным образом. Не знаю почему, но это работает.