私はウェブサイトを持っていますが、それを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つのサーバーに保持できるため、証明書を簡単に取得できます。そしてもっときれいです。維持する。