web-dev-qa-db-ja.com

IPアドレスとポートを使用するようにWindowsホストファイルを構成できますか?

Windows hosts ファイルを構成して、IPアドレス+ポートに基づいてホスト要求を送信したいと思います。

例えば:

127.0.0.1:80       www.site1.com
127.0.0.1:8080     www.sitetwo.com

ポート8080でリッスンしているApacheと、ポート80でIIS=(デフォルト))があるためです。

したがって、これを行うための最良の方法は、hostsファイルを変更することです。何にも影響はありません。エラーもメッセージも表示されません。

13
SIA

できません。 hostsファイルはそれだけです-hosts。これは、ローカルマシン内の「短絡」DNSに相当します。 DNSもポートに送信できません。

あなたがやろうとしていることを達成するために、IISまたはApacheの下に仮想ホスティングをセットアップし、それを(HTTP Host:ヘッダーに基づいて)使用して、サービスにどちらを決定させるかただし、IISとApacheの両方で同時にこれを実行する場合は、これは役に立ちません。

11
user35585
  • hostsファイルは、ホスト名解決専用です
  • ブラウザ、ポートを直接指定しない場合:<hostname>:<port>defaultsポート80

典型的な問題シナリオ

  1. アプリケーションは通常、サーバーを同じデフォルトのIPアドレスに設定します127.0.0.1 aka localhost(hostsファイルで定義)
  2. おそらく他の既存/実行中のサーバー間の衝突を回避するために、アプリケーションでは通常、IPアドレスではなくポートを変更できます。

    2a。 Ifloopback reserved address space127.0.0.0/8でサーバーのIPアドレスを別のIPアドレスに変更できます、それからあなたはおそらくhostsファイルでポートを設定しようとしないでしょう。

可能な解決策

これを回避するには、Windowsを含むネットワークツールnetshポートプロキシとして。


概観

example.app
 |                               <--browser defaults to port 80
 +--> example.app:80
       |                         <--Hostname resolution by Hosts File
       +--> 127.65.43.21:80      
             |                   <--Link by netsh Utility
             +--> 127.0.0.1:8081

行動

  • localhost:8081でサーバーを起動します
  • hostsファイルに「ローカルDNS」を新しい行として追加します
    • 127.65.43.21 example.app
      • ネットワーク127.0.0.0/8内の任意の空きアドレスを使用できます。
      • 注:127.65.43.21:80が別のサービスによって占有されていないことを前提としています。
      • netstat -a -n -p TCP | grep "LISTENING"で確認できます
  • netshコマンドユーティリティを使用して次のネットワーク構成を追加します
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • http://example.appのサーバーにアクセスします

注:
-これらのコマンド/ファイルの変更は、管理者権限
で実行する必要があります

- netsh portproxyはipv6ライブラリが必要です v4tov4を使用する場合でも、通常はデフォルトで含まれます。それ以外の場合は、次のコマンドを使用してインストールします:netsh interface ipv6 install


次のコマンドで追加したエントリを表示できます

netsh interface portproxy show v4tov4

次のコマンドを使用して、エントリを削除できます

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


リソースへのリンク:

注:この回答は、 この同様の質問/ stackoverflowの回答で説明した私の回答の複製です。

4

いいえ、できません。それが機能しない場合は、他の問題が発生しています。

127.0.0.1 site.com
127.0.0.1 www.site.com

これは開発ボックス用だと思いますか?

DNSクエリのプロキシなどを行わない限り、DNSはsite.comとwww.site.comをlocalhostに解決します。おそらくServerFaultでWebサーバー構成のヘルプを依頼する必要があります。これが最も可能性の高い問題です。

3
Xorlev

Fiddler でそれを行うことができます。 Fiddlerスクリプト を使用すると、多くの驚くべきことができます。

このようにホストを設定すると

127.0.0.1     www.site1.com    # Port 80
127.0.0.1     www.sitetwo.com  # Port 8080

これをCustomRules.jsCustomRules.jsを開くには、Customize RulesFiddlerのRulesメニュー)

// this method is already exist
static function OnBeforeRequest(oSession: Session) {  
    if (oSession.Host.toLowerCase() == "www.sitetwo.com") 
        oSession.Host = "www.sitetwo.com:8080";
    ...
}

次にFiddlerがホストを変換し、ポート8080に接続します。

3
Sanghyun Lee

サーバーをローカル開発にのみ使用していますか?その場合は、Apacheを127.0.0.2:80をリッスンし、hostsファイルを使用して、希望するドメイン名にリダイレクトできます。

1
Elmo Allén

他の回答と同様に、ホストファイルにはポート情報がありませんが、ApacheまたはIISは名前ベースの仮想ホスティングに使用します。必要に応じてリダイレクトします。ただし、ホイールを再発明しているため、この値は実際にはわかりません。Apacheはポートベースの仮想ホスティングをサポートしており、iisがサポートしていると思います。

両方を実行する開発マシンを用意することが目標ですが、これは本番環境用です。

0
rerun

次の手順を実行します:

Install Fiddler2

Navigate to Fiddler2 menu:- Tools > HOSTS.. (Click to select)

Add a line like this:-

localhost:8080        www.mydomainname.com

Save the file & then checkout www.mydomainname.com in browser.

https://stackoverflow.com/questions/8652948/using-port-number-on-windows-xp-Host-file

0
Sean