サイト運営を目標に現在勉強中です。
浅学ゆえの未熟な質問、ご容赦ください。
ご助力いただけますと大変助かります。
前提・実現したいこと
・マルチドメイン構成のオリジンサーバに対して、cdnを利用したい。
・表示されるアドレスは、cdnのものではなく、元のオリジンサーバのままにしたい(下記参照)。
<利用サービス>
DNS:Gehirn DNS
CDN:さくらのウェブアクセラレータ
オリジンサーバ:さくらのVPS
試したこと・できなかったこと
[さくらのウェブアクセラレータにおける設定]
公開ドメイン名 aaa.com 独自ドメイン
リクエストプロトコル http/https
オリジンプロトコル https
オリジンサーバ <さくらのVPS IPアドレス>
CNAME先 <さくらのウェブアクセラレータID>.user.webaccel.jp.
ホストヘッダ 未設定
[Gehirn DNSにおける設定]
ネイキッドドメインを使いたかったため、下記の記事を参考に設定しました。
https://qiita.com/masa23/items/ee3838fc9f40478f1bb3
TXTレコードに下記を設定
aaa.com. "webaccel=<さくらのウェブアクセラレータID>.user.webaccel.jp"
Aレコードに下記を設定
aaa.com. ALIAS ON エイリアス参照先:<さくらのウェブアクセラレータID>.user.webaccel.jp.
sub1.aaa.com ALIAS ON エイリアス参照先:<さくらのウェブアクセラレータID>.user.webaccel.jp.
sub2.aaa.com ALIAS ON エイリアス参照先:<さくらのウェブアクセラレータID>.user.webaccel.jp.
または
aaa.com. ALIAS ON エイリアス参照先:<さくらのウェブアクセラレータID>.user.webaccel.jp.
sub1.aaa.com ALIAS ON エイリアス参照先:aaa.com.
sub2.aaa.com ALIAS ON エイリアス参照先:aaa.com.
<結果>
・<さくらのウェブアクセラレータID>.user.webaccel.jp. にはアクセスできます。ただし、表示されるのはaaa.com.のページのみです。
・aaa.comはいずれの場合もアクセスできます。しかし、Google Chromeで確認すると「x-cache: MISS」(hitにならず)、うまくキャッシュできていない状態のようです。
・sub1.aaa.com/sub2.aaa.comの場合はエイリアス参照先をaaa.com.にした場合、アクセス自体ができないようです(「このサイトは安全に接続できません」となります)。<さくらのウェブアクセラレータID>.user.webaccel.jp. の場合、404エラーをおおもとのnginx-proxyかネイキッドドメインのnginxが返しているように見えます(apacheのサブドメインでもnginxの404エラーを返しているので)。
そもそもcdnでマルチドメインを扱うようなことができるのか(ひとつひとつのサブドメインに対してそれぞれcdnを作成しないといけないのか)、というところもよくわかっていないのですが、
それよりもまず、ふつうに、cdnのキャッシュに失敗しているようなので、どうしたらよいものか、ご教授いただければ幸いです。
補足情報
[オリジンサーバの構成]
さくらVPSのサーバ上に、dockerで以下のような構成のサイトを作成しました。
https://aaa.com/ ……ポータルサイトのようなイメージ ├https://sub1.aaa.com/ ……サブドメイン(1) ├https://sub2.aaa.com/ ……サブドメイン(2) ├https://sub3.aaa.com/ ……サブドメイン(3) : :
具体的には下記のように構築しました。
/etc/docker-compose.d/portal/docker-compose.yml version: '2' services: nginx-proxy: image: jwilder/nginx-proxy container_name: nginx-proxy ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - /etc/nginx/ssl:/etc/nginx/dhparam:ro - /etc/letsencrypt/live/aaa.com:/etc/letsencrypt/live/aaa.com:ro - /etc/letsencrypt/archive/aaa.com:/etc/letsencrypt/archive/aaa.com:ro - /etc/docker-compose.d/portal/certs:/etc/nginx/certs:ro networks: - common_link networks: common_link: external: name: common_link /etc/docker-compose.d/portal/web1/docker-compose.yml version: '2' services: web1: image: nginx container_name: web1 environment: - VIRTUAL_HOST=aaa.com volumes: - /etc/docker-compose.d/portal/web1/public:/usr/share/nginx/html networks: - common_link networks: common_link: external: name: common_link /etc/docker-compose.d/portal/sub1/docker-compose.yml version: '2' services: sub1: image: nginx container_name: sub1 environment: - VIRTUAL_HOST=sub1.aaa.com volumes: - /etc/docker-compose.d/portal/sub1/public:/usr/share/nginx/html networks: - common_link networks: common_link: external: name: common_link /etc/docker-compose.d/portal/sub2/docker-compose.yml version: '2' services: sub2: image: httpd container_name: sub2 environment: - VIRTUAL_HOST=sub2.aaa.com volumes: - /etc/docker-compose.d/portal/sub2/public:/usr/local/apache2/htdocs networks: - common_link networks: common_link: external: name: common_link
cdnを通さない状態では、それぞれ、問題なく表示されています。
表示用のhtmlはどちらも以下です。
<html lang="ja"> <head> <meta charset="UTF-8"> <title>HTML5サンプル</title> </head> <body> <img src="1.jpg"> hello nginx1 server!! </body> </html>
cdnを利用する前提条件として、nginx、apcheのコンテナの下記の設定ファイルにそれぞれ以下を追記しています。
/etc/nginx/nginx.conf location ~* .(gif|jpe?g|png|ico)$ { add_header Cache-Control "s-maxage=86400, public"; } /usr/local/apache2/conf/httpd.conf <Files ~ ".(gif|jpe?g|png|ico)$"> Header set Cache-Control "s-maxage=86400, public" </Files>
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/05 14:10 編集
2019/09/09 00:26