nginx + ssl + fastcgi で phpMyAdmin を動作させようとしてハマった

Nginx + fastCGI な環境で SSL を有効にした状態で、phpMyAdmin を使用しようとしたんですがログインしようとすると
「400 Bad Request The plain HTTP request was sent to HTTPS port」
と言うエラーが発生してログインできない。
url を見ると、トップページで https://example.com/phpmyadmin/ にアクセスしてるのに、ログインボタンをクリックすると http://example.com:443/phpmyadmin/ 〜 に飛ばされちゃうという現象が起きてました。

結論から言うと「fastcgi_param HTTPS on;」を指定していなかったのが悪かったようです。

正常に動作した nginx.conf を晒しておきますね。

  server {
    server_name _;
    root    /path/to;
    listen 443 default ssl;
    ssl on;
    ssl_certificate /etc/nginx/server.crt;
    ssl_certificate_key /etc/nginx/server.key;
    access_log  /var/log/nginx/$host.ssl.access.log main;
    location ~ /\.ht { deny  all; }
    location / {
      index  index.php index.html index.htm;
      if (-f $request_filename) {
        expires 30d;
        break;
      }
    }
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
      fastcgi_pass   127.0.0.1:9000;
      fastcgi_index  index.php;
      fastcgi_param  SCRIPT_FILENAME  /path/to/$fastcgi_script_name;
      fastcgi_param  HTTPS on;
      include        fastcgi_params;
    }
  }

22行目の記述が必要だったというオチでした。

コメントを残す

メールアドレスが公開されることはありません。