为什么与我的网络服务器的连接失败了?

为什么与我的网络服务器的连接失败了?

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

我已登录qa-webapp-001.mycompany.com,可以在 DNS 中的三个地方找到它:

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

从网络上的每个主机,我都可以 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 

我的 apache 配置具有以下 bind、listen 和 servername 指令(除此之外,我不确定哪些可能相关):

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

我看不出为什么这会因为一个主机名而失败,有人能给出一个原因吗?

答案1

尝试卷曲http://127.0.0.1/;我怀疑 apache 可能不知道如何根据用于 localhost 的 IPv6 地址进行调度。

如果有效,请修复 /etc/hosts 以将 qa-webapp-... 映射到 127.0.0.1第一的

或者修复 apache。 这个答案展示了如何做到这一点的基本方法。

相关内容