web-dev-qa-db-ja.com

Curlリクエストはlocalhostに解決されません

Localhost /ポート80でApacheを実行しているubuntuサーバーがあります。ドメインはsub.domain.comです。

そのマシンで http:// localhost にcurl要求を行うと、すぐに「ホストに接続できません」というエラーが発生します。

そのマシンでsub.domain.comにcurlリクエストを行うと、数分後にタイムアウトするまで無限ループにとどまります。

別のマシンのWebブラウザーでsub.domain.comを開くと、htmlページが表示されます。

別のマシンでsub.domain.comにcurlリクエストを行うと、接続します。

ここでの取引は何ですか?

7
Ashley Smith

あなたのコメント:「192.168.2.1でリッスンし、次にパブリックIP。ループバックデバイスは127.0.0.1です。」それで、Apache ではない 127.0.0.1でリスニングしていますか?それが事実なら、それはあなたの問題です。すべてのインターフェースをリッスンするようにApacheを構成するか、少なくともApacheがリッスンしているものにループバックインターフェースを追加します。

次の問題:「そのマシンでsub.domain.comにcurlリクエストを行うと、数分後にタイムアウトするまで無限ループにとどまります。」 ping sub.domain.com?この問題は、別のマシンから正常に接続できるため、そのマシンでの名前解決の問題のように感じられます。

4
cjc

おそらくcurlを使用してホストヘッダーを指定する必要があります。そうしないと、Apacheが表示するページを認識しません。設定に応じて、localhostはおそらくApacheのデフォルトページを表示し、仮想ホスト(sub.domain.com)は期待するページを表示します。

使ってみてください:

curl -H "Host:sub.domain.com" 127.0.0.1
6
WerkkreW

行う ping sub.domain.com別のマシンから取得し、応答にIPアドレスを記録します(xxx.yyy.zzz.www)。次に、Apacheマシンを使用します。

curl -H "Host:sub.domain.com" xxx.yyy.zzz.www
1
Dusan Bajic