*.local
に対する要求がlocalhost
にリダイレクトされるように、ローカル開発マシンをセットアップしたい。複数のサイトを開発するときに、site1.local
、site2.local
などと呼ばれるvhostをApacheに追加し、それらをすべてlocalhost
に解決し、Apacheがそれに応じて異なるサイトにサービスを提供できるようにするという考え方です。
Windows XPを使用しています。
追加してみた
127.0.0.1 *.local
私のc:\windows\system32\drivers\etc\hosts
ファイルにも、試しました:
127.0.0.1 .local
どちらも機能していないようです。
別のポート番号に設定できることは知っていますが、どのポートがどのポートであるかを覚えるのが難しいので、それは苦痛です。
ローカルDNSサーバーをセットアップする必要はありませんか?
アクリルDNSプロキシ(無料のオープンソース)が仕事をしています。独自のhostsファイルを使用して、プロキシDNSサーバーを(独自のコンピューター上に)作成します。 hostsファイルはワイルドカードを受け入れます。
公式ウェブサイトからダウンロード
http://mayakron.altervista.org/support/browse.php?path=Acrylic&name=Home
アクリルDNSプロキシを設定するには、上記のリンクからインストールしてから、に移動します
ファイルの最後に次の行を追加します:
127.0.0.1 *.localhost
127.0.0.1 *.local
127.0.0.1 *.lc
Acrylic DNS Proxyサービスを再起動します:
また、ネットワークインターフェイス設定でDNS設定を調整する必要があります:
「次のDNSサーバーアドレスを使用する」を設定します:
Preferred DNS Server: 127.0.0.1
この回答とjeremyasnyderの回答を組み合わせた場合(VirtualDocumentRoot
を使用)、ディレクトリを作成するだけでドメイン/仮想ホストを自動的にセットアップできます。
質問に答えるために、Windowsのhostsファイルでワイルドカードを使用することはできません。
ただし、hostsファイルを変更して新しいサイトを機能させるだけの場合は、次のようにApacheを構成できます。構成を編集し続ける必要はありません。
http://postpostmodern.com/instructional/a-smarter-mamp/
基本的に私の設定に基づいた簡単な要約で、Apache.confファイルに次を追加します。
LoadModule vhost_alias_module modules/mod_vhost_alias.so
NameVirtualHost *:80
<Directory "/xampp/sites">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
VirtualDocumentRoot c:/xampp/sites/%-1/%-2+/
</VirtualHost>
これにより、次のようなエントリを追加できます。
127.0.0.1 test.dev
次に、ディレクトリc:\ xampp\sites\dev\testを作成し、そこに必要なファイルを配置すると、動作します。
もう1つのオプションは、Apache.confで<Directory>
タグを使用し、 http:// localhost/project / からページを参照することです。
可能だとは思いません。
とにかく、新しいサイトと場所を追加するたびに、Apache virtualrootエントリを変更する必要があるため、新しい名前をWindows vhostファイルに同期させるのは大した作業ではありません。
更新:次の回答とこの回答に関するコメントを確認してください。この答えは6歳であり、もはや正しくありません。
既にここに素晴らしい提案を追加するために、 XIP.IO は公開されている素晴らしいワイルドカードDNSサーバーです。
myproject.127.0.0.1.xip.io -- resolves to --> 127.0.0.1
other.project.127.0.0.1.xip.io -- resolves to --> 127.0.0.1
other.machine.10.0.0.1.xip.io -- resolves to --> 10.0.0.1
(非ループバックアドレスを指定する機能は、hostsファイルにアクセスできないiOSデバイス上のサイトをテストするのに最適です。)
これを他の回答に記載されているApache構成のいくつかと組み合わせると、zero setupでVirtualHostsを追加できる可能性があります。
コンピューターを再起動する代わりに、Windowsコマンドプロンプトから「ipconfig/flushdns」を実行する場合、hostsファイルの編集はそれほど苦痛ではありません。
Windows Hostsファイルの使用 に「ワイルドカードは許可されていません」という投稿が見つかりました。
(以前に述べたように)既にApache構成ファイルを編集しているときはそれほど余分な作業ではないため、過去にhostsファイルに追加のエントリを追加しました。
ローカルDNSサーバーでワイルドカードDNSを使用してこれを機能させます。*.local -> 127.0.0.1
のようなA
レコードを追加します
ネットワーク設定には、ネットワーク上のマシンのドメインサフィックス検索リストで選択したドメインサフィックスが必要であるため、.local
を会社の内部ドメイン(たとえば.int
)に置き換えてから.localhost.int
のようなサブドメインを追加する必要があると思います目的を明確にします。
したがって、*.localhost.int
はネットワーク上のすべてのユーザーに対して127.0.0.1
に解決され、すべての開発者の構成ファイル設定は、エンドポイントがそのサブドメインから外れた場合に「機能する」だけです。 site1.localhost.int
、site2.localhost.int
これは、私たちが導入したスキームのほとんどです。
dnsmasqも素敵に見えますが、まだ試していません: http://ihaveabackup.net/2012/06/28/using -wilds-in-the-hosts-file /
ネットワーク管理者に連絡して、ドメインを設定し(「evilpuppetmaster.hell」など)、ワイルドカードを使用して、すべて(* .evilpuppetmaster.hell ')がIPに解決されるようにすることができます。
Pythonで簡単なDNSプロキシを作成しました。/etc/hostsのワイルドカードエントリを読み取ります。こちらをご覧ください: http://code.google.com/p/marlon-tools/source/browse/tools/dnsproxy/dnsproxy.py
LinuxとMac OS Xでテストしましたが、Windowsではまだテストしていません。
ホストの代わりにこのシンプルなツールを作成しました。正規表現がサポートされています。 https://github.com/stackia/DNSAgent
サンプル構成:
[
{
"Pattern": "^.*$",
"NameServer": "8.8.8.8"
},
{
"Pattern": "^(.*\\.googlevideo\\.com)|((.*\\.)?(youtube|ytimg)\\.com)$",
"Address": "203.66.168.119"
},
{
"Pattern": "^.*\\.cn$",
"NameServer": "114.114.114.114"
},
{
"Pattern": "baidu.com$",
"Address": "127.0.0.1"
}
]
AngryHosts を試すことができます。これは、ワイルドカードと正規表現をサポートする方法を提供します。実際には、これはホストファイル拡張および管理ソフトウェアです。
より多くの機能を見ることができます@ http://angryhosts.com/features/
私はそれを行うためにDNSChefを使用しています。
https://thesprawl.org/projects/dnschef/
アプリをダウンロードする必要があります。LinuxまたはMacで実行するにはPythonが必要です。 Windowsには独自のexeがあります。
たとえば、dnsエントリを含むiniファイルを作成する必要があります。
[A]
*.google.com=192.0.2.1
*.local=127.0.0.1
*.devServer1.com=192.0.2.3
次に、管理者権限でDNSアプリケーションを起動する必要があります
Sudo python dnschef.py --file myfile.ini -q
または窓の中
runas dnschef.exe --file myfile.ini -q
最後に、ローカルホスト環境(ネットワーク、インターフェイス、DNSなど、またはlinux /etc/resolv.conf内)に唯一のDNSとして設定する必要があります。
それでおしまい
@petahとAcrylic DNS Proxyが最良の答えであり、最後に彼は@jeremyasnyderがもう少し詳しく説明するApacheを使用してマルチサイトを実行する能力に言及しています...
...ただし、このケースでは、マルチテナントホスティングシステムをテストしているため、テストするmostドメインは同じvirtualhost
に移動し、他のいくつかは他の場所に転送されます。
したがって、この場合、ServerAlias
ディレクティブで正規表現ワイルドカードを使用するだけです。
ServerAlias *.foo.local
書面で禁止事項を見つけることはできませんでしたが、慣例により、WindowsのhostsファイルはUNIXのhostsファイルに厳密に従っており、ワイルドカードのホスト名参照をそのファイルに含めることはできません。
マニュアルページを読むと、次のように表示されます。
DESCRIPTION
The hosts file contains information regarding the known hosts on the net-
work. For each Host a single line should be present with the following
information:
Internet address
Official Host name
Aliases
とはいえ、
Host names may contain any printable character other than a field delim-
iter, newline, or comment character.
それは実際的なレベルからは真実ではありません。
基本的に、/ etc/hostsファイルを調べるコードはワイルドカードエントリをサポートしていません。
回避策は、すべてのエントリを事前に作成することです。スクリプトを使用して、一度に数百のエントリを配置することもできます。
アクリルDNSプロキシを使用したnginx config自動サブドメインの構成
nginxサイトフォルダーのauto.confファイル
server {
listen 80;
server_name ~^(?<branch>.*)\.example\.com;
root /var/www/html/$branch/public;
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_log /var/log/nginx/$branch.error.log error;
sendfile off;
client_max_body_size 100m;
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Acrylicホストファイル127.0.0.1 example.com *.example.com
に追加し、Acrylicサービスを再起動します。 $ branch-サブドメイン名。
代わりにroot/var/www/html/$ branch/public;プロジェクトパスを設定します
目標を達成しようとする人の全体的な構成は次のとおりです(開発環境のワイルドカード、つまりXAMPP-この例では、同じコードベースを指すすべてのサイトを想定しています)。
ファイル:%SystemRoot%\ system32\drivers\etc\hosts
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";
}
これにはechoipdnsを使用できます( https://github.com/zapty/echoipdns )。
echoipdns local
を実行すると、.localサブドメインのすべてのリクエストが127.0.0.1にリダイレクトされるため、xyz.localなどのドメインは127.0.0.1に解決されます。他の任意のサフィックスを使用することもできますが、単にlocalを必要な名前に置き換えるだけです。
Echoipdnsはさらに強力です。ネットワーク内の他のマシンからURLを使用する場合、構成なしで使用できます。
たとえばマシンのIPアドレスが192.168.1.100である場合、常に192.168.1.100に解決されるドメイン名xyz.192-168-1-100.localを使用できます。この魔法は、ドメイン名の2番目の部分のIPアドレスを調べ、DNSクエリで同じIPアドレスを返すことにより、echoipdnsによって行われます。リモートシステムにアクセスするマシンでechoipdnsを実行する必要があります。
echoipdnsはスタンドアロンDNSプロキシとしても設定できるため、このDNSをポイントするだけで、毎回特別なコマンドを実行せずに上記のすべての利点を使用できるようになり、モバイルデバイスからも使用できます。
したがって、これにより、ローカル環境とチーム環境のワイルドカードドメインベースのDNS開発が本質的に簡素化されます。
echoipdnsはMac、Linux、およびWindowsで動作します。
注:私はechoipdnsの著者です。