VirtualHost失败,有多个接口

我有多个接口的实例,我试图configuration基于IP的虚拟主机服务于多个网站,但由于某种原因,它只是返回主文档的根。

我遵循这个教程来获得多个接口的工作。

什么是错的:网站应该显示/var/www/mydomain/index.html ,而是显示/var/www/html/index.html

我曾经尝试过:在VirtualHost中使用*:80,但是目标是让不同的IP /接口有多个VirtualHosts。 从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 。 这是令人担忧的,我还没有find任何解释发生了什么。 没有别的听港口,如果我只听全部80端口,它工作正常。

我的configuration信息:

/ sbin目录/使用ifconfig

eth0:flags = 4163 mtu 1500
inet 192.168.1.231 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80 :: f816:3eff:fee7:b528 prefixlen 64 scopeid 0x20
以太网:16:3e:e7:b5:28 txqueuelen 1000(以太网)
RX包8812字节6501811(6.2 MiB)
RX错误0丢弃0超限0帧0
TX分组3884字节331594(323.8 KiB)
TX错误0丢弃0超载0载波0碰撞0

eth1:flags = 4163 mtu 1500
inet 192.168.1.232networking掩码255.255.255.0广播192.168.1.255
inet6 fe80 :: f816:3eff:fea1:e658 prefixlen 64 scopeid 0x20
以太网:16:3e:a1:e6:58 txqueuelen 1000(以太网)
RX数据包10623字节788238(769.7 KiB)
RX错误0丢弃0超限0帧0
TX数据包5290字节1647702(1.5 MiB)
TX错误0丢弃0超载0载波0碰撞0

eth2:flags = 4163 mtu 1500
inet 192.168.1.233networking掩码255.255.255.0广播192.168.1.255
inet6 fe80 :: f816:3eff:fead:8432 prefixlen 64 scopeid 0x20
以太网:16:3e:ad:84:32 txqueuelen 1000(以太网)
RX数据包6520字节396490(387.1 KiB)
RX错误0丢弃0超限0帧0
TX数据包51字节4973(4.8 KiB)
TX错误0丢弃0超载0载波0碰撞0

eth3:flags = 4163 mtu 1500
inet 192.168.1.234networking掩码255.255.255.0广播192.168.1.255
inet6 fe80 :: f816:3eff:fe4a:8dc7 prefixlen 64 scopeid 0x20
以太网:16:3e:4a:8d:c7 txqueuelen 1000(以太网)
RX数据包33438字节3106902(2.9兆字节)
RX错误0丢弃0超限0帧0
TX分组26161字节16106821(15.3 MiB)
TX错误0丢弃0超载0载波0碰撞0

lo:flags = 73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 :: 1 prefixlen 128 scopeid 0x10
循环txqueuelen 1(本地环回)
RX数据包1992字节199852(195.1 KiB)
RX错误0丢弃0超限0帧0
TX数据包1992字节199852(195.1千比特)
TX错误0丢弃0超载0载波0碰撞0

sudo httpd -S

VirtualHostconfiguration:
92.168.1.231:80 www.mydomain.com(/etc/httpd/conf.d/sites.conf:1)
ServerRoot:“/ etc / httpd”
Main DocumentRoot:“/ var / www / html”
主要ErrorLog:“/ etc / httpd / logs / error_log”
互斥体代理:using_defaults
互斥体authn-socache:using_defaults
互斥体默认值:dir =“/ run / httpd /”mechanism = default
Mutex mpm-accept:using_defaults
互斥体authdigest-opaque:using_defaults
互斥代理平衡器 – shm:using_defaults
互斥锁rewrite-map:using_defaults
互斥体authdigest-client:using_defaults
PidFile:“/run/httpd/httpd.pid”
定义:DUMP_VHOSTS
定义:DUMP_RUN_CFG
用户:name =“apache”id = 48
组:name =“apache”id = 48

cat /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(当在httpd.conf中运行Listen 80并运行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 

除了更改pipe理邮件,从主文档根目录中删除自动索引和设置服务器名称之外,httpd.conf几乎都是简单的。

在主服务器configuration你应该有:

 Listen 80 

这指示apache监听所有接口(从而在所有IP上)。 只有改变它,如果你不想让Apache监听所有的接口/ IP。

你的VHosts应该configuration如下:

 <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地址。

我没有configuration好/etc/hosts ,但修复没有帮助。 我从基于IP的虚拟主机切换到基于领域,并得到修复神奇。 不知道为什么,但它的工作原理。