Dns

curl –resolve 似乎什麼都不做

  • February 20, 2020

--helpcurl的輸出列出了一個--resolve選項,其中指出

--resolve <host:port:address> Force resolve of HOST:PORT to ADDRESS

我沒有任何運氣讓它工作。我試圖執行的基本命令是

curl --resolve foo.example.com:443:localhost https://foo.example.com:443/

我不斷得到回應Couldn't resolve host 'foo.example.com'。我想這樣做是因為我正在測試 foo.example.com 的證書,但我沒有在實際伺服器上測試它。相反,我正在虛擬機器上對其進行測試。我知道我可以進行編輯/etc/hosts,以便 foo.example.com 解析為 localhost,但是如果我可以使其工作,這種 curl 方法似乎是“正確”的方法。

有人看到我在這裡做錯了嗎?

看來address需要是數字 IP 地址,而不是主機名。

嘗試這個:

curl --resolve foo.example.com:443:127.0.0.1 https://foo.example.com:443/

故障排除的一些額外幫助:

確保您列出了協議的正確埠:http=80; https=443 等

curl -v還將為響應伺服器提供 HEADER 資訊,這可能會有所幫助。

$ curl -v --resolve foo.example.com:443:127.0.0.1 https://foo.example.com:443/
## The client request headers prepended by >
> OPTIONS /v1/..
> HOSTS foo.example.com
## The server response prepended by <
< HTTP/1.1 501 Not Implemented
## The html returned
<H1>Unsupported Request</H1>

基本上在這種情況下,該OPTIONS HTTP方法沒有在 CDN 的邊緣伺服器上實施。

引用自:https://unix.stackexchange.com/questions/33121