私はDevOpsの人というよりはエンジニアなので、これが非常に基本的なことである場合は失礼します。
私の状況:example.eduネットワーク上にサーバーがあるため、example.eduへのメインDNSインターフェイスを制御していません。したがって、DNSSimpleまたはZerigoを使用できるとは思いません。ただし、サーバーにはrootがあり、次の2つのホスト名があります。
foo.example.edu
bar.example.edu
私の目標は、次のことを行うようにApacheを設定することです。
まず、訪問者がfoo.example.eduと入力すると、静的なWebページが表示されます。
http://foo.example.edu
->静的なWebページを提供する
次に、訪問者がbar.example.eduと入力すると、URL書き換えが実行され、次のように、HerokuでホストされているサイトのHTTPSバージョンが表示されます。
http://bar.example.edu
-> https://bar-example-edu.herokuapp.com
https://bar.example.edu
-> https://bar-example-edu.herokuapp.com
https://bar.example.edu/some/url
-> https://bar-example-edu.herokuapp.com/some/url
特に、これはURLの書き換えである必要があるため、ブラウザのアドレスバーに、訪問者にはhttps://bar.example.edu/some/url
ではなくhttps://bar-example-edu.herokuapp.com/some/url
が表示されます。
どうすればこれを行うことができますか? Apache mod_rewriteを使用し、httpd.confを編集する必要があると思います。チュートリアルを見始めたばかりですが、主な注意点は、ドメインを完全に制御できないため、正しく設定されていることを確認したいということです。
必要なすべてのApacheVirtualHostディレクティブがすでに配置されていると仮定すると、基本的に、「bar.example.com」のポート80およびポート443 VirtualHostディレクティブに以下を追加する必要があります...(いずれかを選択してください)
オプション1:書き換えルール書き換えルールを探しているとおっしゃっていたので、これを投稿しますが、以下の参照リンクに記載されているように、これを行うための最良の方法ではありません。
RewriteEngine on
RewriteRule ^(.*)$ https://bar-example-edu.herokuapp.com/$1 [P]
参照: http://httpd.Apache.org/docs/current/rewrite/flags.html#flag_p
オプション2:mod_proxyを直接使用する
ProxyPass / https://bar-example-edu.herokuapp.com/
ProxyPassReverse / https://bar-example-edu.herokuapp.com/
参照: http://httpd.Apache.org/docs/current/mod/mod_proxy.html#proxypass
...ちなみに、herokuアプリがhttps(SSL)を使用している場合は、プロキシ構成をポート443(ssl)VirtualHostディレクティブに配置し、ポート80VirtualHostに次の行を含める必要があります。
Redirect / https://bar.example.edu/
...訪問者を開始する前にhttpsに誘導する必要があります。
静的サイトのApache構成は簡単です(標準の無関係な行は省略しました)
<VirtualHost *:80>
ServerName foo.example.edu
DocumentRoot /var/www/foo.example.edu
</VirtualHost>
Bar.example.eduのリダイレクトは、 sslリダイレクトのApacheガイドライン に従うことができます。この単純なユースケースではmod_rewriteは必要ないため、組み込みのリダイレクトを使用します。
<VirtualHost *:80>
ServerName bar.example.edu
Redirect permanent / https://bar.example.edu/
</VirtualHost>
また、Herokuへのリダイレクトには、mod_proxy_httpを使用してリダイレクトします。暗号化された仮想ホストは次のようになります
ProxyRequests Off
<Proxy *>
AddDefaultCharset off
Order deny,allow
Deny from none
</Proxy>
ProxyVia On
<VirtualHost *:443>
ServerName bar.example.edu
SSLEngine On
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
ProxyPass / https://bar-example-edu.herokuapp.com/
ProxyPassReverse / https://bar-example-edu.herokuapp.com/
ProxyPassReverseCookieDomain / https://bar-example-edu.herokuapp.com/
</VirtualHost>
アプリのソースコードのHeroku側では、次のコマンドを使用してアプリケーションを作成します。
heroku create bar-example-edu
そして、それらを構成します カスタムドメインアドオン
heroku domains:add bar.example.edu
プロキシに関して書いたドキュメントのセクション からHerokuに少し変更しました。