質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CDN

CDNは、Webコンテンツをインターネット経由で配信するのに最適化されたネットワークを指します。Webサイトにある静的コンテンツをWebサイトが管理されているサーバーとは異なるサーバーにキャッシュし代わりに配信することで、負荷が分散し速度を向上する仕組みです。

さくらのクラウド

さくらのクラウドは、さくらインターネット株式会社が提供するIaaS型のクラウドサービス。仮想化技術による柔軟性のあるカスタマイズを始め、様々な高機能を備えています。

DNS

DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

さくらのVPS

さくらのVPSは、さくらインターネット社が提供するVPS(仮想専用サーバー)です。高速なSSDの選択や複数台構成も可能。利用者に応じた柔軟なプランが用意されています。大規模システムにも対応可能なスケーラビリティを備えたホスティングサービスです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

636閲覧

ウェブアクセラレータの設定方法について(x-cache: hitにならない)

darumausagi

総合スコア18

CDN

CDNは、Webコンテンツをインターネット経由で配信するのに最適化されたネットワークを指します。Webサイトにある静的コンテンツをWebサイトが管理されているサーバーとは異なるサーバーにキャッシュし代わりに配信することで、負荷が分散し速度を向上する仕組みです。

さくらのクラウド

さくらのクラウドは、さくらインターネット株式会社が提供するIaaS型のクラウドサービス。仮想化技術による柔軟性のあるカスタマイズを始め、様々な高機能を備えています。

DNS

DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

さくらのVPS

さくらのVPSは、さくらインターネット社が提供するVPS(仮想専用サーバー)です。高速なSSDの選択や複数台構成も可能。利用者に応じた柔軟なプランが用意されています。大規模システムにも対応可能なスケーラビリティを備えたホスティングサービスです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2019/08/31 12:56

サイト運営を目標に現在勉強中です。
浅学ゆえの未熟な質問、ご容赦ください。
ご助力いただけますと大変助かります。

前提・実現したいこと

・マルチドメイン構成のオリジンサーバに対して、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>

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  https://aaa.com/    ……ポータルサイトのようなイメージ    ├https://sub1.aaa.com/ ……サブドメイン(1)    ├https://sub2.aaa.com/ ……サブドメイン(2)    ├https://sub3.aaa.com/ ……サブドメイン(3)

こちらはサブドメイン事にサイトの内容が異なるものでしょうか。
異なる場合はウェブアクセラレータに「aaa.com」「sub1.aaa.com」「sub2.aaa.com」と
個別にサイト追加をいただく必要があります。

DNSの設定(CNAMEおよびALIAS先)についても、サイト登録毎に発行されるxxxxxxxx.user.webaccel.jpをご指定ください。

キャッシュがHITにならないということですが、Cache-Controlヘッダは応答ヘッダについていましたでしょうか。
Cache-Control: s-maxageが付与されているにもかかわらず、キャッシュがされない場合は
確認させていただきたいと思いますので、お気軽にお問い合わせいただければと思います。

【会員IDをお持ちのお客様】お問い合わせページ

投稿2019/09/02 01:47

編集2019/09/02 01:49
yamamasa23

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

darumausagi

2019/09/05 14:10 編集

返信が遅くなり大変申し訳ございません。ご回答いただきありがとうございます。 >こちらはサブドメイン事にサイトの内容が異なるものでしょうか。 はい、そうです。それぞれジャンルや毛色が異なるので、サブドメインでそれぞれのサイトを運営したい(便宜上ネイキッドドメインはそれらのポータルのような扱いのサイトにする)というイメージを目標にしています。いずれは扱うコンテンツの特性でバックエンド(オリジン)サーバの使い分けなども考慮しなければいけないのかもしれませんが、きちんと知識を得てからじゃないとお話にならないと思いますので、ひとまず、ひとつのオリジンサーバ(VPS)上のマルチホストという形で実現しようと考えています。 >異なる場合はウェブアクセラレータに「aaa.com」「sub1.aaa.com」「sub2.aaa.com」と 個別にサイト追加をいただく必要があります。 そういうものなのですね!勉強になりました。仮にオリジンサーバが同一のサーバでも、サブドメインごとに表示する内容(たとえばウェブページ)が異なればそれぞれにウェブアクセラレータが必要という認識で合っているという判断でよいでしょうか。 >キャッシュがHITにならないということですが、Cache-Controlヘッダは応答ヘッダについていましたでしょうか。 Cache-Control: s-maxageが付与されているにもかかわらず、キャッシュがされない場合は 確認させていただきたいと思いますので、お気軽にお問い合わせいただければと思います。 サブドメインのALIAS設定に問題が多々あったと思いますので、一度DNS設定をはじめからやり直さないといけないと思っています。なかなか平日は試行錯誤の時間が取れないので、週末になったら再度やりなおして見ます。ひとまず、サブドメインの方で、Cache-Control: s-maxageが出ていたので、サブドメインの方にもウェブアクセラレータを発行してみて、できるかどうか試したいと思います。それでもできないようでしたら、お言葉に甘えさせていただいてお問い合わせしたいと思います。 ありがとうございました!
yamamasa23

2019/09/09 00:26

> 仮にオリジンサーバが同一のサーバでも、サブドメインごとに表示する内容(たとえばウェブページ)が異なればそれぞれにウェブアクセラレータが必要という認識で合っているという判断でよいでしょうか。 はい。オリジンサーバが同じであってもコンテンツがドメイン毎にことなる場合は別サイトとして登録が必要になります。 ドキュメント等で不明点などがありましたら修正しますので、お気軽にご連絡ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問