nginxで変なポートでもSSL強制したい
400 Bad Request
とか出るとき。
ブラウザで毎回https://って打ち直すのが面倒。
server{
port 8888;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
ssl on;
とかしたいところだけれど動かない。
*ポート80がHTTPでポート443がHTTPSなど分けてるときは使える。
結局は
add_header Strict-Transport-Security 'max-age=31536000';
を追加して一回でもhttpsにアクセスすればhttpでもブラウザ側で何とかしてくれるようにした。
ちなみに
error_page 400 https://$server_name:$server_port$request_uri;
とか
もだめ。
設定終わったら
でテストして、ついでに送信しておくとよい。(Chromeとかであらかじめhttpでアクセスしてもhttpsになるようブラウザに組み込んでくれるようになる)
載ったかどうかは
https://cs.chromium.org/codesearch/f/chromium/src/net/http/transport_security_state_static.json
このあたりで確認できるはず。