为什么这个连接到我的Web服务器失败?

我遇到了一个奇怪的服务器访问问题,通过一个名称访问主机导致成功,而其他黑洞。

我login到qa-webapp-001.mycompany.com ,可以在三个地方findDNS:

 qa-webapp-001$ nslookup qa-webapp-001.mycompany.com Server: 10.10.2.1 Address: 10.10.2.1#53 qa-webapp-001.mycompany.com canonical name = qa-webapp-001.prod.mycompany.com. Name: qa-webapp-001.prod.mycompany.com Address: 10.10.2.10 qa-webapp-001$ nslookup qa-webapp-001.prod.mycompany.com Server: 10.10.2.1 Address: 10.10.2.1#53 Name: qa-webapp-001.prod.mycompany.com Address: 10.10.2.10 qa-webapp-001$ nslookup qa-webapp-001 Server: 10.10.2.1 Address: 10.10.2.1#53 qa-webapp-001.mycompany.com canonical name = qa-webapp-001.prod.mycompany.com. Name: qa-webapp-001.prod.mycompany.com Address: 10.10.2.10 

从networking上的每台主机,我可以curl到该主机上运行的Web服务器,并获取索引:

 my-box$ curl qa-webapp-001 *SUCCESS* my-box$ curl qa-webapp-001.prod.mycompany.com *SUCCESS* my-box$ curl qa-webapp-001.mycompany.com *SUCCESS* 

然而,从qa-webapp-001本身来看,这不是事实:

 qa-webapp-001$ curl qa-webapp-001 *SUCCESS* qa-webapp-001$ curl qa-webapp-001.prod.mycompany.com *SUCCESS* qa-webapp-001$ $ curl -v http://qa-webapp-001.advanis.ca/ * About to connect() to qa-webapp-001.advanis.ca port 80 (#0) * Trying ::1... connected * Connected to qa-webapp-001.advanis.ca (::1) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.19.6 (i386-portbld-freebsd6.2) libcurl/7.19.6 OpenSSL/0.9.7e zlib/1.2.3 libssh2/1.2 > Host: qa-webapp-001.advanis.ca > Accept: */* > **HANGS UNTIL CURL TIMEOUT** 

这是ifconfig的输出:

 em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=b<RXCSUM,TXCSUM,VLAN_MTU> inet 10.10.2.10 netmask 0xffffff00 broadcast 10.10.2.255 ether 00:0c:29:a6:17:56 media: Ethernet autoselect (1000baseTX <full-duplex>) status: active plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 

我的Apacheconfiguration有以下绑定,监听和服务器名指令(除此之外,我不知道什么可能是相关的):

 Listen 10.3.1.22:443 Listen 10.1.1.22:80 Listen 10.1.1.22:443 BindAddress 10.3.1.22 BindAddress 10.1.1.22 Port 80 <IfDefine SSL> Listen 80 Listen 443 </IfDefine> ServerName qa-webapp-001.mycompany.com 

这里是/usr/local/sbin/httpd -S

 VirtualHost configuration: [::1]:80 qa-webapp-001.mycompany.com (/usr/local/etc/apache22/extra/httpd-vhosts.conf:27) 127.0.0.1:80 qa-webapp-001.mycompany.com (/usr/local/etc/apache22/extra/httpd-vhosts.conf:27) wildcard NameVirtualHosts and _default_ servers: _default_:443 qa-webapp-001.mycompany.com (/usr/local/etc/apache22/extra/httpd-ssl.conf:74) Syntax OK 

我看不出有什么理由为什么这只会失败,只有一个主机名,任何人都可以提出一个理由?

尝试curl到http://127.0.0.1/ ; 我怀疑apache可能不知道如何根据用于本地主机的IPv6地址进行调度。

如果可行,请修复/ etc / hosts以首先将qa-webapp -…映射到127.0.0.1。

或者修复Apache。 这个答案显示了如何做到这一点的基础知识。