私のローカルホストでサブドメインをテストする必要があります。 *.localhost.com
わたしの /etc/hosts/
ファイル?
それが不可能な場合、どうすればこの問題を回避できますか?ローカルサーバーでワイルドカードサブドメインをテストする必要があります。これはDjango devserverです。Django devサーバーはサブドメインを処理できますか?他のソフトウェア/ルーティングが私に欲しい最終結果を与えることはできますか? ?
PythonでDNSプロキシを作成しました。/etc/hostsのワイルドカードエントリを読み取ります。ここを参照してください: https://github.com/hubdotcom/marlon-tools/blob/master/tools/dnsproxy/dnsproxy.py
インストールdnsmasq(とにかく、これをすべてのLinuxデスクトップでDNSキャッシュとして実行します)。 dnsmasq.conf
次の行を追加します。
address=/localhost.com/127.0.0.1
/etc/hosts
ファイルでワイルドカードを指定することはできません。必要なホスト名を明示的に指定するか、適切なルールを使用してローカルネームサーバーをセットアップします。
DNSサーバーをセットアップし、各clientがDNSサーバーを解決に使用するようにする必要があります。サーバー自体は dnsmasq のように "軽い"ものでも、 [〜#〜] bind [〜#〜] のように重いものでもかまいません。
個人的には、そのためのPACファイルを作成し、ブラウザーでそれを使用するのが好きです。
ステップ1:ファイルを作成します。例:*.proxy.pac*
どこか(私は$home
フォルダ)
ステップ2:このコードを貼り付けます(例はポート8000を使用):
function FindProxyForURL(url, Host) {
if (shExpMatch(Host, "*localhost")) {
return "PROXY localhost:8000";
}
return "DIRECT";
}
ステップ3:ブラウザでこのPACファイルを使用します。
ステップ4:次のコードにアクセスしてアプリをテストできます:http://mysubdomain.localhost/
ステップ5:お楽しみください:)
私は私の古いプロジェクトを片付けました:
https://github.com/airtonix/avahi-aliases
要件:
Dnsmasqまたはpython dns proxy:
/etc/hosts
ではワイルドカードを使用できません。
BIND、組み込みだが非アクティブなDNSサーバー、およびApacheを使用してOS Xで実行する方法についてのよいウォークスルーについては、 ここ をご覧ください。
このDNSベースのソリューションは、何もインストールする必要なく、私の場合完全に機能しました: https://Gist.github.com/fedir/04e60d679d5657d1f9f9aa10b3168282 (Mac OSX 10.9)
dnsmasq
をNetworkManager
と一緒に使用する場合は、dnsmasq
をNetworkManager
から追加して、
dns=dnsmasq
/etc/NetworkManager/NetworkManager.conf
。次に、dnsmasq構成は/etc/NetworkManager/dnsmasq.conf
または/etc/NetworkManager/dnsmasq.d/
それぞれ。
この主題の一般的なタスクは、ディレクトリをサブドメインにマッピングすることです。そのための非常に簡単な方法は、ディレクトリベースのエントリをホストファイルに自動的に追加することです。
#!/ usr/bin/python import os hostsFile = open( "/ etc/hosts"、 "a +"); lines = hostsFile.readlines() for os.listdir( '/ opt/subdomainDirs')のfileName: entryExists = false in line in lines: if fileName in line: entryExists = True not not if entryExists: hostsFile。 write( "127.0.0.1" + fileName + ".localhost\n");
追加の手順をいくつか実行する必要があったことを除いて、dnsmasqがうまくいきました。
完全な手順は次のとおりです。
/etc/resolv.conf
の前に次の行を追加します
nameserver 127.0.0.1
次の行を/etc/dnsmasq.conf
に追加します
listen-address=127.0.0.1
address=/localhost.localdomain/127.0.0.1
address=/localhost/127.0.0.1
Dnsmasqを再起動します
簡潔な答え:
/ etc/hosts /ファイルでは、ワイルドカードやポート番号を使用できません。サブドメインごとに1つのエントリを作成する必要があります
簡単に言えば、そうではありません。より長い答えは、あなたが実際に達成したいことをより明確にする必要があるということです、おそらくそれを達成するためのより良い方法と異なる方法のどちらかがあるからです。
Webホスティングの場合(他の方法で使用されたことはありません)、DNSで仮想ホスティング対応のWebサーバーと組み合わせて行われます。 ワイルドカードDNSレコード (ウィキペディア)の詳細と、LinuxでバインドとApacheを使用する Apacheとバインドを使用したワイルドカードホスティング に関する記事。
最悪の場合、ローカルDNSサーバーを使用することもできます。
この問題の最終的な回答であると考えているtschundeeeに感謝します。コメントできればいいのですが、ここに元の目標を達成しようとしている人の全体的な構成があります(ワイルドカードはすべて同じコードベースを指している-何もインストールせず、開発環境、つまり、XAMPP)
ファイル:/ etc/hosts(Windows以外)
127.0.0.1 example.local
ファイル:/XAMPP/etc/httpd.conf
# Virtual hosts
Include etc/extra/httpd-vhosts.conf
ファイル:XAMPP/etc/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/path_to_XAMPP/htdocs"
ServerName example.local
ServerAlias *.example.local
# SetEnv APP_ENVIRONMENT development
# ErrorLog "logs/example.local-error_log"
# CustomLog "logs/example.local-access_log" common
</VirtualHost>
apacheを再起動します
任意の場所にwhatever.pacとして保存し、ブラウザのネットワーク>プロキシ> auto_configuration設定にファイルをロードします(これを変更した場合は再ロードします)。
function FindProxyForURL(url, Host) {
if (shExpMatch(Host, "*example.local")) {
return "PROXY example.local";
}
return "DIRECT";
}