同じパブリックIPアドレスで異なるドメインを持つ複数のWebサイトをホストする方法はありますか?ユーザーが入力すると、たとえば、プライベートネットワーク(192.168.1.20)上の1つのサーバーに移動するexample1.comと、192.168に移動するexample2.com .1.21?私はVMホストを持っていて、ターンキーlinuxソリューションのいくつかを試してみたいと思っています。それらを使用することにしたときに、それらのサイトを公開してアクセスできるようにできれば素晴らしいと思います。ソリューションの多くは私はここでリダイレクトを使用することに遭遇しましたが、それがどのように機能するかについての適切な説明が見つかりませんでした。ユーザーがブラウザでリダイレクトが発生するのを見ますか?遅いですか?私は持っている必要があると思いますポート80でリッスンしてから他のサーバーにリダイレクトするApacheを実行している1つの「マスター」サーバー?
これを行う必要があるたびに、HAProxyにフォールバックします。これは、単一(または複数)のパブリックIPの背後で複数のサービスをホストできるようにする別のリバースプロキシパッケージです。
この例では、パブリックアドレスを使用してマシンにHAproxyをインストールします。
これは、選択したディストに応じて、APT-GETまたはYUMから実行できます。インストールしたら、設定ファイルを見てください(Ubuntuでは/etc/haproxy/haproxy.cfgにあります)
HAProxyは、FRONTENDSとBACKENDS、フロントエンドを使用してIP:PORTにバインドし、次にサーバー(1つ以上)を指定するバックエンドを使用します。
これは、単一のホームIPの背後で複数のWebサービスアプリケーションを実行するための構成の例です。私の場合、バックエンドの同じIPで複数のポートを使用しているので、例では、ポート80で別のIPを使用したいとします。
#GLOBAL CONFIG
global
maxconn 1000
daemon
user haproxy
group haproxy
nbproc 1
pidfile /var/run/haproxy.pid
stats socket /var/run/haproxy.cmd mode 777 level admin
#ASSUMED DEFAULTS
defaults
log global
mode http
option httplog
option dontlognull
retries 3
maxconn 1000
contimeout 5000
clitimeout 50000
srvtimeout 50000
#STATS PAGE
listen stats 192.168.10.253:9000
mode http
stats enable
stats auth username:password
stats uri /proxy_stats
stats realm PAGE TITLE
####SABNZBD####
backend sabnzbd
server sabnzbd 192.168.10.253:8080 weight 1 maxconn 1000 check inter 10000
option redispatch
option httpclose
option forwardfor
balance roundrobin
timeout server 120000
####SICKBEARD####
backend sickbeard
server sickbeard 192.168.10.253:8081 weight 1 maxconn 1000 check inter 10000
option redispatch
option httpclose
option forwardfor
balance roundrobin
timeout server 120000
####COUCHPOTATO####
backend router
server router 192.168.10.254:80 weight 1 maxconn 1000 check inter 10000
option redispatch
option httpclose
option forwardfor
balance roundrobin
timeout server 120000
####TROLL####
backend troll
# server troll www.meatspin.com:80 weight 1 maxconn 1000 check inter 10000
server troll www.google.com:80 weight 1 maxconn 1000 check inter 10000
option redispatch
option httpclose
option forwardfor
balance roundrobin
timeout server 120000
#NAS FrontEnd
frontend nas
bind PUBLIC_IP:80
reqadd X-Forwarded-Proto:\ http
default_backend troll
acl req_couchpotato hdr_beg(Host) -i film.
acl req_sickbeard hdr_beg(Host) -i tv.
acl req_router hdr_beg(Host) -i home.
acl req_sabnzbd hdr_beg(Host) -i warez.
use_backend couchpotato if req_couchpotato
use_backend sickbeard if req_sickbeard
use_backend sabnzbd if req_sabnzbd
use_backend router if req_router
これを設定し、フロントエンドでPUBLIC_IPを構成すると、myserverはポート80でリッスンし、着信リクエストのhttpヘッダーを確認し、film.mypersonaldomain.comのリクエストを確認した場合、tv.mypersonaldomainを確認した場合はcouchpotatoバックエンドを使用しました。 .comはsickbeardバックエンドを使用します。
これをテストしているときに使用した「トロール」設定に注意してください。一致するURLを指定せずにパブリックIPにアクセスした場合のデフォルトのバックエンドは、meatspin.comにリクエストを送信することでした(重要な場合は、このアドレスにアクセスしないでください) EYES)、この例では、これをgoogle.comに置き換えました。
HAProxyを使用すると、さらに多くのことができるようになりますが、これにより、基本がよく理解できます。 HAPRoxyのドキュメントはかなり詳細ですが、非常に包括的でもあります。
J
サーバーとパブリックネットワークの間にリバースプロキシが必要です。 nginxはこのための人気のある選択肢であり、何を検索するかがわかれば、そこには多くの例があります( http://www.howtoforge.com/how-to-set-up-nginx-as-a- reverse-proxy-for-Apache2-on-ubuntu-12.04 は、「nginxリバースプロキシ」の検索で最初に返されたものの1つです)。
プロキシの内部にある異なるサーバーによって提供されるドメイン/ディレクトリについては、プロキシマシンが異なるローカルロケーションから提供する場合と同じように、各仮想ホストまたはディレクトリを定義しますが、代わりに関連するオプション。
nginxは唯一のオプションではありません。多くのWebサーバー(適切なモジュールを備えたApacheを含む)はこの方法で動作できます。 nginxは高速で軽量であるため人気のある選択肢ですが、他の機能も必要な場合は、買い物をして最良の選択をしてください。
いずれかのサイトでSSLを使用する場合は、関連する証明書を使用してプロキシを構成する必要があります。また、プロセスを通過するために複数のSSLサイトが必要な場合は、SNIを処理するようにWebサーバーを構成する必要があります。効率を上げるために、プロキシが非SSL httpifによって内部サーバーと通信するのが通常です。それらの間のネットワークは信頼されています。