基本的に、要求がHTTPSまたはHTTPオブジェクトのどちらに対して行われたかに応じて、DNSが異なるCNAMEで応答する必要があります。
s.test.com -> IF(https) RESPONSE special.domain.com ELSE simple.domain.com
出来ますか?それを行うための他の可能な方法は何ですか?
これはDNSでは不可能です。 DNS要求は、要求のreasonから完全に独立しています。
これを可能にするには、DNSのキャッシュシステム全体を廃棄する必要があります。 DNSは、新しいスキームが発明されるたびに書き直す必要もあります。
あなたは何をしようとしているのですか?実際の問題を解決するためのより良い方法があるかもしれません。
番号。
DNSはHTTPまたはHTTPSを認識しません。
秘書に誰かの電話番号(IP番号)を尋ねるのと比較してください。相手に何を聞きたいかに関わらず、同じ返事が返ってきます。
誰もが言っているように、DNSではこれを行うことはできません。これは通常、URLリダイレクトで行われると思います。たとえば、WebサーバーとしてApacheを使用している場合は、mod_rewriteを使用してリダイレクトルールを設定できます。次に、次のようなルールを記述できます。
# If HTTPS redirect to special.domain.com
RewriteCond %{HTTPS} =on
RewriteRule .* https://special.domain.com%{REQUEST_URI} [R,L]
# If not HTTPS redirct to simple.domain.com
RewriteCond %{HTTPS} !=on
RewriteRule .* http://simple.domain.com%{REQUEST_URI} [R,L]
その他の例を次に示します。 http://www.askapache.com/htaccess/ssl-example-usage-in-htaccess.html
私はあなたに疑いの利益を与え、次のことを仮定します:
したがって、私はあなたの質問を、 DNSでサポートされているリソースレコードタイプ の中にMX(メール交換)リソースレコード(RR)に類似したHTTP/HTTPSがDNSにあるかどうか疑問に思っていることを意味します。
これは、 RFC 2782 で説明されている SRV(サービス)レコードタイプ の目的のようです。 LDAP、SIP、およびXMPPサービスは、DNSを介してこの方法でより一般的にアドバタイズされるようですが。
この理由は歴史的であるように思われます。SRVレコードは、HTTPが提案、開発、および展開された後にのみ提案、実装、および展開されました。この時点でSRVレコードを使用してHTTP/HTTPSをアドバタイズするのが適切でない理由についての説明については、 この質問 を参照してください。
いいえ、DNSはどのプロトコルがルックアップを要求しているかを知りません(または気にしません)。
何も知りませんが、もう一方の端でWebサーバーを制御している場合は、SSLを使用しているかどうかに応じて、別のドメインにリダイレクトできます(または別の仮想ホストを使用できます)。
すでに述べたように、基本的なDNSはこれを行いません。ただし、クライアントを制御する場合(つまり、コーディングして配布するソフトウェア)、SRVレコードを使用できます。
http://en.wikipedia.org/wiki/SRV_record
したがって、HTTP用とHTTPS用の応答が必要な場合は、DNSゾーンレコードに次のようなものを配置します。
_https._tcp.s.test.com. 86400 IN SRV 0 5 443 special.domain.com.
_http._tcp.s.test.com. 86400 IN SRV 0 5 80 simple.domain.com.
したがって、「s.test.com」レコードのhttps/tcpサービスを検索するDNSクライアントは、サービスがホストspecial.domain.com、ポート443にあるという応答を受け取ります。http/を要求するDNSクライアント「s.test.com」のtcpは、ホストsimple.domain.com、ポート80という応答を返します。
「05」は優先順位/設定であるため、同じサービス(special1、special2、...; simpleA、simpleBなど)に対して複数のホストがある場合にラウンドロビンを実行できます。
ほとんどのソフトウェア(Webブラウザなど)はSRVレコードを検索せず、Aレコードのみを検索します。
質問に負荷分散タグを付けているので、ポート(httpは80、httpsは443)による負荷分散が最も簡単な方法であることに言及する必要があります。
さらに、virtualhost(http)またはSNI(https)による別のレベルの負荷分散を追加できます。
それ以外は、この質問はすでによく答えられています。
いいえ。他の人が言っているように、それはネームサーバーの責任ではありません。
ただし、プロトコル(HTTPまたはHTTP)を検出し、それに応じてそのリンクを提供するようにアプリケーションを変更することができます。
これが例です。複数の画像を表示するWebページがあるとします。ページがHTTPを使用して表示されるときにこれらの画像をHTTPCDNにリンクし、ページがHTTPを使用してアクセスされるときにページがHTTPCDNを使用するようにしたい場合があります。動的Webアプリケーションを使用してプロトコルを確認し、それに応じてすべてのリンクを置き換えます。