基礎インフラ (Nginx + PHP + MariaDB)
Windows上でサーバーを動かすなら、軽量かつ爆速な Nginx が最適解。バックエンドにはPHP-CGIを複数プロセス立ち上げ、データベースにはMariaDBを採用しました。
location ~ \.php$ {
fastcgi_pass php_backend;
fastcgi_index index.php;
}
Windows PCを最強のWebサーバーへ。後に続く同志たちのための、血と汗と涙の構築記録。
Windows上でサーバーを動かすなら、軽量かつ爆速な Nginx が最適解。バックエンドにはPHP-CGIを複数プロセス立ち上げ、データベースにはMariaDBを採用しました。
ルーター内(ローカルIP)とルーター外(独自ドメイン)の両方からアクセス可能にするため、WordPressのURL設定をハードコードから動的取得へと変更します。
家庭用回線はIPアドレスが変動するため、MyDNS.jpを利用して無料の独自ドメインを取得します。
その後、Windows常駐ツールの DeNSuke にMyDNSのIDとパスワードを設定し、IP変更を自動通知させます。
※DeNSukeの一番上にある「更新サービス」のプルダウンメニューを、必ず「MyDNS」に変更してください。
万が一「サブドメイン名の入力が必要です」というエラーが出た場合は、迷わず mydns.jp と入力すれば成功します(MyDNSの仕様により、正しいID/PASSさえ合っていればこれで通ります)。
WindowsとNginxの組み合わせなら win-acme (wacs.exe) が”楽勝”です。コマンド一発で証明書の取得・更新作業を全自動化できます。
外部からアクセスできない時、原因はだいたいこの2つです。
1. Windowsファイアウォール
PowerShell(管理者)から443ポートを必ず開けること。
2. ルーターのポートフォワーディング
192.168.11.x サーバーへ ポート80と443を紐付け(転送)してください。
もし、SSL化後に Chrome系ブラウザからのみ ERR_CONNECTION_CLOSED で弾かれる 現象が起きた場合、NginxのWindows版特有のバグに遭遇しています。
Windows版NginxのHTTP/2機構は、Chromeの通信処理と相性が最悪です。設定ファイルの listen 443 ssl http2; から http2 の記述を削除し、HTTP/1.1へとフォールバックさせることで劇的に安定します。