Localhost /ポート80でApacheを実行しているubuntuサーバーがあります。ドメインはsub.domain.comです。
そのマシンで http:// localhost にcurl要求を行うと、すぐに「ホストに接続できません」というエラーが発生します。
そのマシンでsub.domain.comにcurlリクエストを行うと、数分後にタイムアウトするまで無限ループにとどまります。
別のマシンのWebブラウザーでsub.domain.comを開くと、htmlページが表示されます。
別のマシンでsub.domain.comにcurlリクエストを行うと、接続します。
ここでの取引は何ですか?
あなたのコメント:「192.168.2.1でリッスンし、次にパブリックIP。ループバックデバイスは127.0.0.1です。」それで、Apache ではない 127.0.0.1でリスニングしていますか?それが事実なら、それはあなたの問題です。すべてのインターフェースをリッスンするようにApacheを構成するか、少なくともApacheがリッスンしているものにループバックインターフェースを追加します。
次の問題:「そのマシンでsub.domain.comにcurlリクエストを行うと、数分後にタイムアウトするまで無限ループにとどまります。」 ping sub.domain.com
?この問題は、別のマシンから正常に接続できるため、そのマシンでの名前解決の問題のように感じられます。
おそらくcurlを使用してホストヘッダーを指定する必要があります。そうしないと、Apacheが表示するページを認識しません。設定に応じて、localhostはおそらくApacheのデフォルトページを表示し、仮想ホスト(sub.domain.com)は期待するページを表示します。
使ってみてください:
curl -H "Host:sub.domain.com" 127.0.0.1
行う ping sub.domain.com
別のマシンから取得し、応答にIPアドレスを記録します(xxx.yyy.zzz.www)。次に、Apacheマシンを使用します。
curl -H "Host:sub.domain.com" xxx.yyy.zzz.www