中二病でも全うに生きたい!

だーくふれいむまちゅたー

http を https にリダイレクト

http から https へのリダイレクト、LBなどを挟むとリダイレクトループになったりするため、いままでは80ポート以外をわざわざ空けて、そこにアクセスきたらリダイレクトするようにしてた。
そしたら X-Forwarded-Proto を見て、よしなにしてくれる方法があった。完全に便利。

apache

<VirtualHost *:80>

  RewriteEngine On
  RewriteCond %{HTTP:X-Forwarded-Proto} =http
  RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

</VirtualHost>

nginx

server {
    listen       80;

    if ($http_x_forwarded_proto = 'http') {
        return 301 https://$host$request_uri;
    }
  
}