ConoHa VPS で phpMyAdmin に502エラーが出た時の解決方法【完全版】
最初の症状
phpMyAdmin にアクセスしようとしたら以下のエラーが表示されました。
502 Bad Gateway「昨日まで動いていたのになぜ?」と思いながら調査を開始しました。
原因①:削除済みサイトの設定ファイルが残っていた
調査方法
まずnginxのエラーログを確認しました。
tail -20 /var/opt/kusanagi/log/nginx129/error.logすると以下のエラーが大量に出ていました。
connect() failed (111: Connection refused) while connecting to upstream,
fastcgi://127.0.0.1:90749074番ポートに接続できないというエラーです。次にPHP-FPMが実際にどのポートで動いているか確認しました。
ss -tlnp | grep php結果:
LISTEN 0 4096 127.0.0.1:9000PHP-FPMは 9000番で動いているのに、nginxは 9074番に接続しようとしていました。
原因を特定
どの設定ファイルが間違ったポートを指定しているか調べました。
grep -r "9074" /etc/opt/kusanagi/nginx/結果:
/etc/opt/kusanagi/nginx/conf.d/削除済みサイト.conf: fastcgi_pass 127.0.0.1:9074;以前削除したサイトの設定ファイルが原因でした。サイト自体は削除したのに、nginxの設定ファイルだけが残っていたのです!
解決策:不要な設定ファイルを削除
rm /etc/opt/kusanagi/nginx/conf.d/削除済みサイト.conf削除確認が出たら y を入力してEnterを押します。
/opt/kusanagi/nginx129/sbin/nginx -tkusanagi restartrestart completed. と表示されれば完了です!
サイトを削除してもnginxの設定ファイルは自動で削除されません!Kusanagiでサイトを削除した後は
/etc/opt/kusanagi/nginx/conf.d/ に不要な .conf ファイルが残っていないか確認しましょう。原因②:phpMyAdmin自体がなくなっていた
502エラーは解決したものの、今度は phpMyAdmin にアクセスしても別のサイトが表示されるという問題が発生しました。
原因
phpMyAdmin を設置していたサイトごと削除してしまっていました。phpMyAdmin も一緒に消えてしまっていたのです。
解決策:phpMyAdmin を新しいサイトに再インストール
STEP 1:phpMyAdmin をダウンロード
cd /tmpwget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gztar zxvf phpMyAdmin-latest-all-languages.tar.gzSTEP 2:設置したいサイトのDocumentRootに移動
mv /tmp/phpMyAdmin-*/ /home/kusanagi/サイト名/DocumentRoot/phpmyadminSTEP 3:所有者を確認して設定
まず既存ファイルの所有者を確認します。
ls -la /home/kusanagi/サイト名/DocumentRoot/ | head -5確認した所有者と同じように設定します(例:httpd:www の場合)。
chown -R httpd:www /home/kusanagi/サイト名/DocumentRoot/phpmyadminサイトを削除する前に phpMyAdmin など大切なツールを別の場所に移動しておきましょう!所有者のグループ名は環境によって異なります。必ず既存ファイルで確認してから設定してください。
原因③:Basic認証の設定が新しいサイトに入っていなかった
phpMyAdmin のページは表示されましたが、Basic認証のダイアログが出ませんでした。
STEP 1:設定フォルダとextra.confを作成
mkdir -p /home/kusanagi/サイト名/config/nginx以下のコマンドを1つずつ実行してください。
echo 'location ^~ /phpmyadmin/ {' > /home/kusanagi/サイト名/config/nginx/extra.conf
echo ' auth_basic "Restricted";' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo ' auth_basic_user_file /home/kusanagi/.auth/.htpasswd;' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo ' location ~ \.php$ {' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo ' auth_basic "Restricted";' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo ' auth_basic_user_file /home/kusanagi/.auth/.htpasswd;' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo ' include conf.d/fastcgi.inc;' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo ' }' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo '}' >> /home/kusanagi/サイト名/config/nginx/extra.conf確認:
cat /home/kusanagi/サイト名/config/nginx/extra.confSTEP 2:サイトのnginx設定ファイルにextra.confを読み込ませる
Pythonスクリプトを使ってHTTPブロックとHTTPSブロックの両方に追加します。
echo "f='/etc/opt/kusanagi/nginx/conf.d/サイト名.conf'" > /tmp/fixsite.py
echo "t=open(f).read()" >> /tmp/fixsite.py
echo "old='include conf.d/acme.inc;'" >> /tmp/fixsite.py
echo "new=old+'\\n include /home/kusanagi/サイト名/config/nginx/extra.conf;'" >> /tmp/fixsite.py
echo "open(f,'w').write(t.replace(old,new,2))" >> /tmp/fixsite.py
echo "print('done')" >> /tmp/fixsite.py
python3 /tmp/fixsite.py確認:
grep -n "extra\|acme" /etc/opt/kusanagi/nginx/conf.d/サイト名.confSTEP 3:nginxを再起動
/opt/kusanagi/nginx129/sbin/nginx -tkusanagi restart動作確認
ブラウザで以下にアクセスしてみましょう。
https://あなたのドメイン/phpmyadmin/Basic認証のダイアログが表示されたら成功です!🎉
今回のトラブル全体図
↓
② 削除済みサイトの設定ファイルが残っていた
→ 不要な .conf ファイルを削除して解決
↓
③ phpMyAdmin 自体が消えていた
→ サイトごと削除されていた
→ 運用中のサイトに新規インストール
↓
④ Basic認証が設定されていなかった
→ extra.conf を作成してサイトの conf に追加
↓
🎉 完全解決!
まとめ:同じミスをしないためのチェックリスト
- サイト削除前に phpMyAdmin など大切なツールを先に移動した
- /etc/opt/kusanagi/nginx/conf.d/ に削除済みサイトの .conf が残っていないか確認した
- ss -tlnp | grep php で PHP-FPM のポートを確認した
- サイトの .conf の HTTP・HTTPS 両方のブロックに extra.conf を追加した
セキュリティについて
| 対策 | 内容 |
|---|---|
| Basic認証を必ず設定する | 2段階認証でセキュリティを強化 |
| URLを推測されにくくする | /phpmyadmin/ → /db_xxxxxx/ など |
| アクセスIPを制限する | 自分のIPアドレスのみ許可する |
| パスワードを定期的に変更する | htpasswd コマンドで更新 |

同じところでハマっている方の参考になれば嬉しいです!
質問があればコメントで気軽に聞いてください😄






コメント