У меня есть экземпляр с несколькими интерфейсами, и я пытаюсь настроить 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 коллизий 0eth1: 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 коллизий 0eth2: 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 коллизий 0eth3: 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 коллизий 0lo: 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 на доменные, и это было исправлено волшебным образом. Не знаю почему, но это работает.