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

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

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

Amazon CloudFrontは、AWSの高速且つ高パフォーマンスなコンテンツ配信(CDN) サービス。容量の大きいコンテンツをキャッシュさせてWebサーバの負荷を軽減し、サーバダウンの防止など安定した配信が可能になります。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Amazon Route 53

Amazon Route 53 はAmazonが提供する、 可用性と拡張性に優れた ドメインネームシステム(DNS)サービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

3回答

1486閲覧

複雑な構築をした【Wordpress】の「セッション切れ」や「投稿できない」問題。

_fao

総合スコア33

Amazon CloudFront

Amazon CloudFrontは、AWSの高速且つ高パフォーマンスなコンテンツ配信(CDN) サービス。容量の大きいコンテンツをキャッシュさせてWebサーバの負荷を軽減し、サーバダウンの防止など安定した配信が可能になります。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Amazon Route 53

Amazon Route 53 はAmazonが提供する、 可用性と拡張性に優れた ドメインネームシステム(DNS)サービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2019/05/13 16:54

編集2019/05/15 17:58

#構築内容
イメージ説明
#今回の問題
「www.sample.com」よりログインしたwordpressでは一部の機能が制限されてしまいます。
具体的にはWordpressのサイトカラーを選んだり、ロゴ画像をアップロードしたりする『カスタマイズ画面』へ行こうとすると、「セッションの期限が切れました。」の無限ループが発生します。
記事の投稿については、ただただ更新ができず、下書き、プレビュー等もできません。

#画像投稿をした
「wp.sample.com」よりログインをして、ロゴ画像を投稿しました。
もちろん、この図の通りhttpでの接続になってしまっているので、みかけ上は「https://wp.sample.com」ですが、SSLはなっておりません。
そして「このサイトへの接続は完全には保護されていません」と表示が出てしまいます。
#画像のURLが2つある。
投稿した画像にはURLが紐付きますが、画像に対するURLが2つ出来上がっています。
「wp.sample.com」からログインして確認すると、画像に対応するURLは「https://wp.sample.com/img/xxxx.png」となっており、
「www.sample.com」からログインして確認すると、「https://www.sample.com/img/xxxx.png」となっております。

また、Chromeの検証より問題の「ロゴ画像」のソースを確認すると「wp.sample.com〜/.png」となっておりました。
「www.sample.com/〜/.png」の形式にしようとしてみましたが、多分セッションが切れる問題と直結しているので、これを改善しないと始まらないでしょう。
#最終目標
セッション切れの問題を解決さえできれば全て片付くと考えています。
どうにか「www.sample.com」からwordpressに完全に接続できるようにできれば、画像などもSSL化したドメインで投稿できるようになります。

お力添えよろしくお願い致します。

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

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

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

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

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

CHERRY

2019/05/14 00:28

WordPressのダッシュボード(管理画面)で、「サイトアドレス(URL)」 と「WordPressアドレス(URL)」は、何が設定されていますか?
_fao

2019/05/15 08:05

お答えいたします。 そちらにつきましても管理画面が2つあることから、それぞれのサブドメイン付きのものがそれぞれに表示されております。
guest

回答3

0

この記事を参考に、Forward cookies の設定を見直したところ、直りました!
https://aws.amazon.com/jp/blogs/startups/how-to-accelerate-your-wordpress-site-with-amazon-cloudfront/

投稿2019/05/15 22:44

_fao

総合スコア33

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

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

退会済みユーザー

退会済みユーザー

2019/05/15 23:30

該当の記事では、WordPress に手を入れず、cloudfront の設定のみで乗り切っているように見えます。 WordPress のコード変更はせず、管理画面に対しての Forward cookies のポリシー変更のみで対応できたということでしょうか?
_fao

2019/05/15 23:51

そのようですね、。 実際なぜ直ったのかは明確に言うことはできないです。 やったこととしてはDefault(*)のForward Cookiesのホワイトリストを見直して、全く同じ設定にしたということです。 他のPath Patternに関しては、管理系なのでallでやってます。 一応自分の見解としては、otolabさんからの回答で、 「http://wp.sample.comとhttps://www.sample.comを行ったり来たりしているイメージですね。」 というのがあったので、中継となるシステムはcloud frontの設定ぐらいしかなかったので、そこをひたすらいじった次第であります。
退会済みユーザー

退会済みユーザー

2019/05/16 00:19

コメントありがとうございます。大変参考になりました!
guest

0

ベストアンサー

Wordpressは直接公開以外での運用は必ずといっていいほどハマりますよね。

CloudFrontを前に置く場合は次の対応が必要になるかと思います。

wp-config.php

diff

1 if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { 2 $_SERVER['HTTPS'] = 'on'; 3-} 4+} elseif (isset( $_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO']) && $_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] === 'https') { 5+ $_SERVER['HTTPS'] ='on'; 6+}

以下、参考になさってみてください。
CloudFrontの下でWordpressを実行する時に色々ハマった話 後編

投稿2019/05/14 01:53

moonphase

総合スコア6621

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

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

_fao

2019/05/14 21:45 編集

大変ありがたいご意見ありがとうございます!!! 2点質問させてください。 1. 現在の設定は以下です。 if ( defined( 'WP_CLI' ) ) { $_SERVER['HTTP_HOST'] = 'localhost'; } define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/'); define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/'); /** Absolute path to the WordPress directory. */ if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); if (strpos($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'], 'https') !== false) { $_SERVER['HTTPS'] = 'on'; } 多分、「http→https」の設定だと思うのですが、そのご教示いただけたコードを挿入する場合、何か重複してしまうようなことはありませんでしょうか? また、このコードは、 【require_once(ABSPATH . 'wp-settings.php');】 のコードより先に配置することで、「このページにアクセスする権限がありません。」になることを回避しています。 →https://lucklog.info/wp-ssl-error/ 2. 回答の中で参考にあげられていたqiitaの記事を拝見しました。 記事内のコードとは少し違うコードを書かれていると思うのですが、演算子「+」「-」の有り無しは関係あるのでしょうか? よろしくお願い致します。
退会済みユーザー

退会済みユーザー

2019/05/14 23:52

丸投げで恐縮ですが、CloudFront 側のマニュアル引用したほうが良い気がします。
moonphase

2019/05/15 01:09

1. 現在 if (strpos($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'], 'https') !== false) { $_SERVER['HTTPS'] = 'on'; } が記載してあるので私の書いたコードを挿入する必要はありません。 2. +-についてはdiffで差分を表す記号であり、コード本体ではありません te2jiさんのいうCloudFront側のマニュアルで参考になりそうなものを見つけることはできませんでしたが、 AWSのblogで次の記事を見つけたのでリンクを張っておきます。 https://aws.amazon.com/jp/blogs/startups/how-to-accelerate-your-wordpress-site-with-amazon-cloudfront/
_fao

2019/05/15 08:03

返信ありがとうございます! とすると、解決策はまだわからなそうですね。。。 そのAWSのブログも拝見しました。 まだ試してはいないので、色々やってみてから改めて返信をさせて頂きます。 よろしくお願い致します。
退会済みユーザー

退会済みユーザー

2019/05/15 23:29

ヘッダに対してのマニュアルをイメージしてコメントしたのですが、提示の記事の方が適切ですね。大変興味深く読みました。 丸投げ、失礼しました^^;
guest

0

A: http://wp.sample.com と B: https://www.sample.com があって、

  • BからログインするとWP管理画面からの操作が一部行えない(問題2)
  • AからアクセスするとWP管理画面は正常に動く
    • が、画像のアップロードを行うとhttpへのアクセスが発生する(問題1)

という状況ですね?

問題1の方は、http://wp.sample.com/img/xxxx.pngみたいな形で記事にリンクが埋まってしまっているのではないかなという気がします。
WPには公開ホスト名の設定があったと思うので、その辺りから調整が効くのではないでしょうか。

問題2の方も同様の問題に思えます。

投稿2019/05/13 17:31

otolab

総合スコア765

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

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

_fao

2019/05/13 20:01 編集

回答ありがとうございます。 返信させていただきます。 【問題2】 一部のログイン状況において、「セッションの期限が切れました。」の無限ループが発生します。 具体的にはWordpressのサイトカラーを選んだり、ロゴ画像をアップロードしたりする『カスタマイズ画面』へ行こうとすると無限ループが発生します。 記事の投稿については、ただただ更新ができません。 【問題1】 画像に対するURLが2つ出来上がっています。 「wp.sample.com」からログインして確認すると、画像に対応するURLは「https://wp.sample.com/img/xxxx.png」となっており、www.sample.com」からログインして確認すると、「https://www.sample.com/img/xxxx.png」となっております。 また、Chromeの検証より問題の「ロゴ画像」のソースを確認すると「wp.sample.com〜/.png」となっておりました。 よって、【問題2】のセッションループを解消できれば、「www.sample.com」が有効になるものかと思われます。 この情報は質問本文に補足として追加させていただきます。 よろしくお願い致します。
otolab

2019/05/14 23:45

> 一部のログイン状況において、「セッションの期限が切れました。」の無限ループが発生します。 http://wp.sample.comとhttps://www.sample.comを行ったり来たりしているイメージですね。 ログインはwww.sample.comから行っているのに対し、特定のメニュー項目(?)などがwp.sample.comになっているイメージ。 WPとしてはwp.sample.comとして可動している状態なのだと思います。 <img src="<可動ホスト名>/<画像のパス>">のような動的な処理が内部にあるのだと思います。
_fao

2019/05/15 08:07

わかりやすい分析ありがとうございます! 言葉で表されて、自分の中でも整理できました。ありがとうございます。 解決法が今のところなさそうなので、引き続き宜しくお願い致します。
otolab

2019/05/15 08:44

http://wpdocs.osdn.jp/wp-config.php_%E3%81%AE%E7%B7%A8%E9%9B%86 > WP_SITEURL > WP_SITEURL は WordPress アドレス (URL) を定義します。 > WP_HOME > WP_HOME は サイトアドレス (URL) を定義します。 > Cookie ドメインの設定 > 複雑なドメイン設定に対して WordPress cookie にドメインセットを指定できます。 この辺りのどれかだと思うんですけどね。あとはこれらをキーに調べてみると良いかも。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問