Mal*_*ist 6 apache-http-server virtual-host
我有一个域名链接到我家里的IP地址。但是,我想使用相同的服务器/IP 来显示多个网站。
我无法让虚拟主机工作。
我的 conf.d/virtual.conf 是:
NameVirtualHost 192.168.10.151:80
Run Code Online (Sandbox Code Playgroud)
我的网站可用/www.mydomain.com 是:
Listen 80
<VirtualHost *>
ServerAdmin admin@mydomain.com
ServerName www.mydomain.com
ServerAlias mydomain.com
#Indexes and Directory Root
DirectoryIndex index.html index.php
DocumentRoot /media/BigDisk/www/www.mydomain.com/
# Log Files
ErrorLog /media/BigDisk/www/www.mydomain.com/logs/error.log
CustomLog /media/BigDisk/www/www.mydomain.com/logs/access.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
并且该站点是使用 a2ensite 启用的,并且 apache 重新加载,没有任何警告或错误,但是当我去时www.mydomain.com我什么也没得到(“哎呀!谷歌浏览器无法连接......”)。
我究竟做错了什么?
更新:重新启动 Apache 结果如下:
malfist@webhost:~$ sudo /etc/init.d/apache2 restart
[sudo] password for malfist:
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost 192.168.10.151:80 has no VirtualHosts
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost 192.168.10.151:80 has no VirtualHosts
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
Run Code Online (Sandbox Code Playgroud)
首先使用nslookup或dig或host检查www.mydomain.com在你的路由器的静态外部IP地址分。
然后检查您的路由器是否配置了端口转发,以便将到达外部接口的端口 80 的请求转发到服务器私有 IP 地址的端口 80。
然后检查您的 ISP 的条款和条件是否允许您运行 HTTP 服务。某些 ISP 会阻止入站 HTTP 连接。
最后,请记住,如果您是在 LAN 内进行测试,您需要为 www.mydomain.com 使用不同的 IP 地址,您可以将其添加192.168.10.151 www.mydomain.com到您的主机文件中(例如/etc/hosts或C:\WINDOWS\system32\drivers\etc\hosts)。正如 Malfist 在评论中指出的那样:如果路由器支持 NAT 反射,则没有必要。
更新:
“无法连接”表明存在基本 IP 连接问题,而不是 Apache vhost 配置问题。后者更有可能导致 404 或 500 的 HTTP 响应。如果请求到达 Apache,您应该在错误日志中看到一个条目。如果那里没有条目,则表明 Apache 没有收到任何请求。
查看常见的错误配置
多个 NameVirtualHost 行将产生“NameVirtualHost *:80 has no VirtualHosts”警告。不过,Apache 将忽略第二个指令并使用第一个定义的 NameVirtualHost 行。当一个人使用多个虚拟主机配置文件并且不明白您只需要定义一个特定的 NameVirtualHost 行时,这似乎会发生。如上所述,这可能发生在 debian ports.conf 文件中,尤其是在升级之后。
其他一些程序已经在侦听端口 80。使用它netstat -anp来找出什么,然后停止它。
我会在 Apache 服务器上使用网络嗅探器(例如 tcpdump 或 wireshark)来查看传入的 HTTP 请求正在到达 - 如果没有,那么您就知道这是 IP 连接问题。
更新 2:
另一个好的诊断工具是在服务器上运行它
wget --header="Host: www.mydomain.com" -O - http://localhost
Run Code Online (Sandbox Code Playgroud)
这是您应该看到的输出
[root@mybox 日志]# wget --header="Host: foo.bar" -O - http://localhost --2011-09-01 18:56:08-- http://localhost/ 解析本地主机... 127.0.0.1 连接到 localhost|127.0.0.1|:80... 已连接。 已发送 HTTP 请求,正在等待响应... 200 OK 长度:125 [文本/html] 保存到:`STDOUT' 0% [ ] 0 --.-K/s <html> <头> <title>我的盒子</title> </头> <身体> <h1>我的盒子</h1> <p>没什么可看的,继续前进</p> </正文> </html> 100%[======================================>] 125 --.-K/ s 为 0 2011-09-01 18:56:08 (10.8 MB/s) - '-' 保存 [125/125] [root@mybox 日志]# tail -n 1 access_log 127.0.0.1 - - [01/Sep/2011:18:56:08 +0100] "GET / HTTP/1.0" 200 125 "-" "Wget/1.11.4 Red Hat modified"
添加-S选项以wget查看服务器的响应标头。
如果您收到诸如“连接被拒绝”之类的消息,则 Apache 未在侦听端口 80。
的输出netstat -anp应包括
tcp 0 0 :::80 :::* LISTEN 12345/httpd
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38873 次 |
| 最近记录: |