昨日のエントリーでSiteGuardはNginxだと使いにくいのでCerber Securityにしたと書きましたが、自分の使い方が悪いのか、使っているブラウザの機能拡張が悪いのか、自分自身が不正アクセス判定されてしまいました…
設定次第でどうにかなるのかもしれないけど、要するにほしいのはログインページ隠しとreCAPTCHAなので、それぞれ別のシンプルなものに入れ替え。
webエンジニアの作業memo
昨日のエントリーでSiteGuardはNginxだと使いにくいのでCerber Securityにしたと書きましたが、自分の使い方が悪いのか、使っているブラウザの機能拡張が悪いのか、自分自身が不正アクセス判定されてしまいました…
設定次第でどうにかなるのかもしれないけど、要するにほしいのはログインページ隠しとreCAPTCHAなので、それぞれ別のシンプルなものに入れ替え。
このブログはそもそも、以下の記事に刺激されて作りました。
「WordPressを簡単に、てっとり早くベストプラクティスな環境を作りたい!」
1時間で出来る!最強のWordPress環境構築(永久無料)
そんな方に、私が日頃行っていて、最強だと思っている方法をご紹介します。
無料で!簡単に!こんないいことないよね!
ここで書かれている肝は
GCP使えば無料でできるという知識はもとからあったけど、こんなに簡単にできるということを再認識させてもらいました。
ただいくつか詰まった点があるので補記したいと思います。
「wordpress with nginx and ssl certified by bitnami」をデプロイしたままだとpostサイズの制限が厳しく、ちょっとでも大きな画像をアップロードすると失敗します。
なのでpostサイズの制限を変更します。
ターミナルなどで /opt/bitnami/nginx/conf/nginx.conf を編集してclient_max_body_sizeを設定
~略~ http { include mime.types; default_type application/octet-stream; client_body_temp_path "/opt/bitnami/nginx/tmp/client_body" 1 2; client_max_body_size 50M; // この行を追加 proxy_temp_path "/opt/bitnami/nginx/tmp/proxy" 1 2; fastcgi_temp_path "/opt/bitnami/nginx/tmp/fastcgi" 1 2; scgi_temp_path "/opt/bitnami/nginx/tmp/scgi" 1 2; uwsgi_temp_path "/opt/bitnami/nginx/tmp/uwsgi" 1 2; ~略~
編集後はnginx再起動
$ sudo /opt/bitnami/ctlscript.sh restart nginx
元記事では「SiteGuard WP Plugin」を勧めているけど、こちらはnginxでの動作に難ありです。
なので同様に管理画面URLを変更できる「Cerber Security, Antispam & Malware Scan」を使用。
reCAPTCHAもこのプラグインで導入できます。
参考
SiteGuard WP PluginがNginxに対応していないのでWP Cerberを使ってみた
※ 6/13追記 Cerber Securityは自分の使い方に合わなかったのでプラグイン変更しました
こうやって作成したwordpressサイトを運用しようと本気の設定をしていると、いつのまにか記事の投稿に失敗するようになっていました。
いろいろ調べた結果、wordpress 設定 > 一般 の一般設定にて、「WordPress アドレス (URL)」「サイトアドレス (URL)」がhttp://のままでいるために、httpsで利用していると撥ねられていた模様。
いつのまにかと思ったのは、http://<IPアドレス>で接続しているうちは問題なかったのが、cloudflareを使ってhttps接続になるとダメになっていた、ということでしょうか。
ただ、一般設定画面ではこちらの項目を修正したいのですが、表示がグレーアウトになっていて変更不可。
そのためwp-config.phpをいじって対応しました。
/opt/bitnami/apps/wordpress/htdocs/wp-config.php に以下を追記
define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/'); define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/');