在使用Docker部署的WordPress进行验证后,无法通过浏览器访问特定端口
请问有什么问题吗?
-
- ローカルで WordPress を Docker で構築した
使ったイメージは ここ のDocker Official
ページに記載されている通り -p 8080:80 のポート割り当てで起動
この時点で初回の検証をする場合は特に問題は起きなかった
改めて起動して http://localhost:8080 にアクセスすると、 http://localhost にリダイレクトされてアクセスできない
WordPressコンテナを落として次の日、WordPress 以外のアプリケーション開発で http://localhost:8080 にアクセスすると http://localhost の表示となり、8080 にアクセスできていないように見える
ただし、/ 以外 ( http://localhost:8080/login など ) にアクセスはできる
curl などでは普通に http://localhost:8080 へはアクセスできる
寻找这个问题的原因。
调查结果 chá jié guǒ)
-
- WordPress の home および siteurl はコンテナ内部のポートに依存した初期設定が行われるので、 http://localhost で初期データが作成される
どうも WordPress ではアクセスしてきたドメインと wp_options.home に登録されているドメインが違う場合、 home のドメインに 301リダイレクトが発生する……らしい。
なんでこんな機能があるんだろう…、リバプロとかすごく挟みづらそう…
そのため、この状態のWordPressが動作している状態で http://localhost:8080 にアクセスすると、 http://localhost に 301 リダイレクトされる
そして ブラウザでは 301 リダイレクトもキャッシュする
ので、キャッシュが残っている間は http://localhost:8080 へのアクセスを行うと、一瞬でリダイレクトされるので http://localhost:8080 に対してアクセスができないように見える
解决方案 (jiě jué cè)
-
- ブラウザのキャッシュをクリアする
-
- WordPressが利用するDataBase の home および siteurl を http://localhost:8080 に書き換える
ただし、WordPress 内部から home および siteurl を参照して自分自身にアクセスするような場合、http://localhost:8080 はコンテナ内部で閉じているので動かない
サンプルには -p 8080:80 と書いてあるが、もう複雑すぎるので -p 80:80 以外で動かさない方がいいんじゃないかな?
もしくは、そもそもローカルで構築せずにグローバルなFQDNを割り当ててそれで外中両方のアクセスを適切に解決できるようにすればよい
请参考
同样经历类似麻烦的人的文章。
- トラブル事案|dockerでWordPressを動かしたらlocalhost が転送される事態になった件
闲谈
从WordPress和系统管理的角度来看,印象中有很多令人头疼的地方,令人感到痛苦。