web-dev-qa-db-ja.com

Linux / OSXの/ etc / hosts /ファイルで、ワイルドカードサブドメインを実行するにはどうすればよいですか?

私のローカルホストでサブドメインをテストする必要があります。 *.localhost.com わたしの /etc/hosts/ファイル?

それが不可能な場合、どうすればこの問題を回避できますか?ローカルサーバーでワイルドカードサブドメインをテストする必要があります。これはDjango devserverです。Django devサーバーはサブドメインを処理できますか?他のソフトウェア/ルーティングが私に欲しい最終結果を与えることはできますか? ?

181
MikeN

PythonでDNSプロキシを作成しました。/etc/hostsのワイルドカードエントリを読み取ります。ここを参照してください: https://github.com/hubdotcom/marlon-tools/blob/master/tools/dnsproxy/dnsproxy.py

45
marlonyao

インストールdnsmasq(とにかく、これをすべてのLinuxデスクトップでDNSキャッシュとして実行します)。 dnsmasq.conf次の行を追加します。

address=/localhost.com/127.0.0.1
160
tomchuk

/etc/hostsファイルでワイルドカードを指定することはできません。必要なホスト名を明示的に指定するか、適切なルールを使用してローカルネームサーバーをセットアップします。

65
ar.

DNSサーバーをセットアップし、各clientがDNSサーバーを解決に使用するようにする必要があります。サーバー自体は dnsmasq のように "軽い"ものでも、 [〜#〜] bind [〜#〜] のように重いものでもかまいません。

15
Gerald Combs

シンプルなワークフロー(何もインストールする必要はありません)

個人的には、そのためのPACファイルを作成し、ブラウザーでそれを使用するのが好きです。

ステップ1:ファイルを作成します。例:*.proxy.pac*どこか(私は$homeフォルダ)

ステップ2:このコードを貼り付けます(例はポート8000​​を使用):

function FindProxyForURL(url, Host) {
  if (shExpMatch(Host, "*localhost")) {
    return "PROXY localhost:8000";
  }
  return "DIRECT";
}

ステップ3:ブラウザでこのPACファイルを使用します。

PAC&Firefox用のYouTubeビデオ

ステップ4:次のコードにアクセスしてアプリをテストできます:http://mysubdomain.localhost/

ステップ5:お楽しみください:)

11
Bijan

私は私の古いプロジェクトを片付けました:

https://github.com/airtonix/avahi-aliases

要件:

  • avahiとpython-avahiがインストール可能なLinux
  • あなたは.localドメインで大丈夫です(avahiは他の種類をサポートしていません)

Dnsmasqまたはpython dns proxy:

  • ローカルネットワーク上の他のavahi/bonjourユーザーは、作成したエイリアスを解決してネットワークに通知できます(ポート5353へのアクセスを許可している場合)。
5
airtonix

/etc/hostsではワイルドカードを使用できません。

BIND、組み込みだが非アクティブなDNSサーバー、およびApacheを使用してOS Xで実行する方法についてのよいウォークスルーについては、 ここ をご覧ください。

4
Trevor

このDNSベースのソリューションは、何もインストールする必要なく、私の場合完全に機能しました: https://Gist.github.com/fedir/04e60d679d5657d1f9f9aa10b3168282 (Mac OSX 10.9)

4
Fedir RYKHTIK

dnsmasqNetworkManagerと一緒に使用する場合は、dnsmasqNetworkManagerから追加して、

dns=dnsmasq

/etc/NetworkManager/NetworkManager.conf。次に、dnsmasq構成は/etc/NetworkManager/dnsmasq.confまたは/etc/NetworkManager/dnsmasq.d/それぞれ。

3
TNT

この主題の一般的なタスクは、ディレクトリをサブドメインにマッピングすることです。そのための非常に簡単な方法は、ディレクトリベースのエントリをホストファイルに自動的に追加することです。

#!/ 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"); 
2
Lukas Glowania

追加の手順をいくつか実行する必要があったことを除いて、dnsmasqがうまくいきました。

完全な手順は次のとおりです。

  1. /etc/resolv.confの前に次の行を追加します

    nameserver 127.0.0.1
    
  2. 次の行を/etc/dnsmasq.confに追加します

    listen-address=127.0.0.1
    address=/localhost.localdomain/127.0.0.1
    address=/localhost/127.0.0.1
    
  3. Dnsmasqを再起動します

2
jbangerter

簡潔な答え:

/ etc/hosts /ファイルでは、ワイルドカードやポート番号を使用できません。サブドメインごとに1つのエントリを作成する必要があります

2
Marcos Placona

簡単に言えば、そうではありません。より長い答えは、あなたが実際に達成したいことをより明確にする必要があるということです、おそらくそれを達成するためのより良い方法と異なる方法のどちらかがあるからです。

Webホスティングの場合(他の方法で使用されたことはありません)、DNSで仮想ホスティング対応のWebサーバーと組み合わせて行われます。 ワイルドカードDNSレコード (ウィキペディア)の詳細と、LinuxでバインドとApacheを使用する Apacheとバインドを使用したワイルドカードホスティング に関する記事。

最悪の場合、ローカルDNSサーバーを使用することもできます。

2
mctylr

この問題の最終的な回答であると考えているtschundeeeに感謝します。コメントできればいいのですが、ここに元の目標を達成しようとしている人の全体的な構成があります(ワイルドカードはすべて同じコードベースを指している-何もインストールせず、開発環境、つまり、XAMPP)

hostsファイル(エントリを追加)

ファイル:/ etc/hosts(Windows以外)

127.0.0.1   example.local

httpd.conf設定(vhostsを有効にする)

ファイル:/XAMPP/etc/httpd.conf

# Virtual hosts
Include etc/extra/httpd-vhosts.conf

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を再起動します

pacファイルを作成します。

任意の場所にwhatever.pacとして保存し、ブラウザのネットワーク>プロキシ> auto_configuration設定にファイルをロードします(これを変更した場合は再ロードします)。

function FindProxyForURL(url, Host) {
  if (shExpMatch(Host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}
2
Daniel Jordi