解决方案是在文件中添加一行:/etc/hosts
127.0.0.1 api.domain.com
保存文件后,如果您在服务器上运行 ping,它应该返回如下内容:
user@domain:~$ ping api.domain.com
PING api.domain.com (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.026 ms
64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.030 ms
64 bytes from localhost (127.0.0.1): icmp_req=3 ttl=64 time=0.031 ms
64 bytes from localhost (127.0.0.1): icmp_req=4 ttl=64 time=0.029 ms
文件 /etc/hosts 将比您的机器 DNS 服务器具有更高的优先级来解析名称。
如果一切配置正确,您的 cURL 现在应该使用 localhost 从 api.domain.com 页面检索页面。您可以通过使用详细选项运行 curl 来验证它:
user@domain:~$ curl --verbose api.domain.com
* About to connect() to api.domain.com port 80 (#0)
* Trying 127.0.0.1... connected
第一行将让您知道您是否确实使用 localhost ip 进行请求!
在极不可能的情况下,检查文件:/etc/nsswitch.conf并验证主机行看起来像这样(文件优先于 dns 服务器):
hosts: files dns