web-dev-qa-db-ja.com

サブドメインに基づいて他の内部サーバーにリダイレクトする

これが私の状況です

ホームネットワーク、Windowsマシン、1つの外部向けIPアドレス(ポート80を許可)1つのWindowsホームサーバーは常にマシン上にあり、まもなくWHS2011へのアップグレードを計画しています。独自のWebサーバーを使用し、直接アクセスされるいくつかのIPカメラ。

私の問題/目標:

ポート80を介して、サブドメインでホームネットワーク上のIPカメラとサーバーに外部からアクセスできるようにしたい。つまり、cam1.mydomain.com、cam2.mydomain.com、nas.mydomain.comなど。

現在、ポートフォワーディングが設定されていますが、私が使用している多くのネットワークでは、すべての非標準ポートがロックされているため、すべてポート80に配置する必要があります。理解しているように、これはルーターレベルでは実行できません。 Webサーバーレベルで実行する必要がありますが、これは問題ありません。

本質的に、これはサブドメインに応じて異なるサーバーに内部的にルーティングするだけです。これは、比較的単純なソリューションでよくある問題です。

何か省略した場合はお知らせください。前もって感謝します。

(ところで、IISすべてが等しい場合はApacheよりも望ましい)

2
ELG

HTTP経由で(つまり、プラグインやその他のクライアントアプリケーション経由ではなく、Webブラウザーで直接)サービスにアクセスしている場合は、リバースプロキシとしてnginxなどを使用してこれを行うことができます-プロキシごとに各リクエストを送信する場所を選択できます着信「ホスト」ヘッダー行に依存するため(独自のプロキシパス設定を持つサブドメインごとに1つの「サーバー」ディレクティブを持つことによる)。

このようなリバースプロキシとして機能できるnginxのようなプログラムを実行する(またはインストールできる)カスタムファームウェアを実行していない限り、ルーターでこれを行うことはできませんが、TCP80をにポートフォワードする場合nginxを実行しているマシンであれば、この手法は機能します。

https://help.ubuntu.com/community/Nginx/ReverseProxy は、リバースプロキシとしてのnginxの設定例を示しています(さらに必要な場合は、さらに多くの例があります)。他の多くのWebサーバーまたはリバースプロキシサービスを提供するために特別に設計されたアプリは、これを実行できるはずです。 mod_proxy(IIRCは通常存在しますが、デフォルトではロードされません)がある場合、Apacheは可能です。 IIRC IIS3番目の部分のアドオン(コストがかかる可能性があります)なしではできませんが、ほとんどのWindowsビルドがありますあなたが完全にWindows環境であってもあなたがまだそれらを使うことができるように仕事をすることができるオープンソースツールの。

1
David Spillett

これを行うには、パブリックアドレスで1つのApacheインスタンスを実行し(実際には、ルーターからApacheを実行できる内部ボックスにポート80を転送することを意味します)、サブドメインごとに仮想ホストを定義し、プロキシパスを使用しますそれを実際の内部アドレスに渡すには:

<VirtualHost *:80>
    ServerName cam1.domain.com

    ProxyRequests Off
        <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>
    ProxyErrorOverride On                       
    ProxyPass / http://192.168.1.123/
    ProxyPassReverse / http://192.168.1.123/
    <Location />
    Order allow,deny
        Allow from all
    </Location>

</VirtualHost>


<VirtualHost *:80>
    ServerName cam2.domain.com

    ProxyRequests Off
        <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>
    ProxyErrorOverride On                       
    ProxyPass / http://192.168.1.124/
    ProxyPassReverse / http://192.168.1.124/
    <Location />
    Order allow,deny
        Allow from all
    </Location>

</VirtualHost>

Cam1は内部で192.168.1.123、cam2は192.168.1.124などです。

0
Flexo