1つのIPで複数のサーバーを保持する方法

1つのIPで複数のサーバーを保持する方法

私はウェブサイトを持っていますが、それをexample.comと呼びます。これでURLを取得しました。http://www.example.com、DNSアドレスは10.0.1.1(:80)で、私のネットワークの192.168.0.14にポート転送されます。

私もホームページが欲しいhttp://edu.example.com他のサーバーでホストされていますが、ルータは1つだけなので、IPアドレスも1つです。

Apache設定ファイルでVirtualHostを試しましたが、他のデバイスのディレクトリを指定することはできません。

答え1

これを行うには、Apacheのプロキシディレクティブを設定する必要があります。 ApacheでProxyPassディレクティブを確認してください。モードエージェント特定の情報を表示できるページです。

答え2

これを行うには、必ずNginxリバースプロキシを使用します。

nginxをApacheサーバーと同じマシンに配置し、URLに基​​づいてリクエストをセカンダリサーバーにリダイレクトするように設定できます。

この例では、Apacheは(以前に)ポート8080でexample.comを提供するように設定されており、edu.example.comはxxx100:80で提供されています。

server { 
server_name example.com;

  # app1 reverse proxy follow
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://127.0.0.1:8080;

}

server { 
  server_name edu.example.com;

  # app2 reverse proxy settings follow
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://x.x.x.100:80;
}

アクセスとエラーログの定義を使用して、この例を拡張できます。

この設定が提供するもう1つの大きな利点は、SSL / TLSオフロードです。 Apacheバックエンドが純粋なhttpサービスを提供し、nginxがSSL / TLSが有効なhttpsサービスを提供できるようにすることで、証明書を1つのサーバーに保持できるため、証明書を簡単に取得できます。そしてもっときれいです。維持する。

関連情報