Mac OS X Lion(Snow Leopardから)にアップグレードしてから、仮想ホストへの解決が非常に遅い(約3秒の間)ことに気づきました。これを解決する可能性のあるいくつかのヒント(たとえば、.local TLDを使用しない)を見つけましたが、私のセットアップには当てはまりません。
私のセットアップは非常に簡単です:-Apache 2(Lionに同梱)-有効PHP-いくつかの仮想ホストを追加-インストールされたMailおよびSMTP Pearパッケージ
Apacheのhostsファイルは次のようになります。
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
127.0.0.1 tbi.dev
127.0.0.1 www.tbi.dev
127.0.0.1 test1.tbi.dev
127.0.0.1 test2.tbi.dev
127.0.0.1 psa.dev
127.0.0.1 snd.dev
そして、Apacheの仮想ホストファイルは次のようになります。
<VirtualHost *:80>
DocumentRoot "/Users/Bart/Sites/tbi"
ServerName tbi.dev
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Users/Bart/Sites/tbi"
ServerName tbi.dev
ServerAlias *.tbi.dev www.tbi.dev
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Users/Bart/Sites/psa"
ServerName psa.dev
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Users/Bart/Sites/sandbox"
ServerName snd.dev
</VirtualHost>
セットアップは基本的にSnow Leopardでの私のセットアップと同じですが、仮想ホストを解決するためのApacheのパフォーマンスは大幅に異なります。 Mac OS X Lion 10.7.2を実行していますが、10.7.1を実行しているときにすでに問題が発生していました。
これは小さな問題のように思えるかもしれませんが、仮想ホストに1日に数百回アクセスしていると、想像できるように、これはかなりの時間の浪費になります。
長いDNSタイムアウトは、ほとんど常にIPv6の問題の兆候です。
ApacheへのIPv6接続が必要ですか?
そうでない場合は、変更することをお勧めします
<VirtualHost *:80>
に
<VirtualHost 0.0.0.0:80>
または、IPv6接続を完全に無効にします。
私もたった今これに遭遇しました。
これにより、ネットワーク構成のIPv6がオフに設定されます...
# list all network interfaces to get their names
networksetup -listallnetworkservices
# disable the one you want, in my case it's WiFi
networksetup -setv6off Wi-Fi
しかし、残念ながら、これでDNS解決の問題を解決できませんでした(システムの再起動後など)。実際に役立つのは、次のように/ etc/hostsにipv6スタイルのIPを追加することでした。
# my original /etc/hosts ...
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
127.0.0.1 project.local
# adding this solved resolving:
fe80::1%lo0 project.local
wget http://project.local がすぐに表示されるようになりました
Resolving project.local... 127.0.0.1
Connecting to project.local|127.0.0.1|:80... connected.
project.localの解決で5秒間ハングする代わりに.
オンMacOSX Lion.local
ドメインは、マルチキャストDNSリゾルバー(bonjour)用に「予約」されています。
つまり、.localで終わるドメインを検索すると、mDNS検索(最大5秒)before/ etc/hostsが実行されます。
修正:
.dev
)このブログ を見て、それが役立つかどうかを確認し、特に問題#2を強調します。
どうやら、ターミナルと一部のBSD Unixツールは、/ etc/resolv.confと/ etc/hostsの正しい順序を正しく使用し、次にDNSサーバーを使用します。ただし、すべてのアプリケーションを含め、OS X Lionの他のすべては逆方向に実行します。
できます。
このソリューションを使用します
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost6
fe80::1%lo0 localhost
マーベリックスの同じバグ。
次のように、ローカルホスト定義を/etc/hosts
の先頭に置くと解決します。
127.0.0.1 localhost project1.dev project2.dev
127.0.0.1 project3.dev project4.dev
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
私は変更してみます:
::1 localhost
fe80::1%lo0 localhost
に
::1 localhost6
fe80::1%lo0 localhost6