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行目の記述が必要だったというオチでした。