新しいmorolicious(ver5以降?)でNginxの後ろでhttpsを検知するに必要な設定
Nginxの後ろでSSL通信を検知する
Nginxの設定は基本的には Mojolicious::Guides::Cookbookにあるものでいいのだけど、Nginxをリバースプロキシとして使っていて、バックエンドのアプリ側でSSL通信か否かを判定する場合には
proxy_set_header X-Forwarded-Proto $scheme;
この設定がないと $app->req->is_secure;
が偽を返す。
うちも以前は
set $mode 0; if ($scheme = "https"){ set $mode 1; } proxy_set_header X-Forwarded-HTTPS $mode;
みたいな設定をしていたのだけど、mojoliciousのバージョンを上げたらうごかなかった。
なんとなく全体的な設定
upstream morolicio.us { server 127.0.0.1:8102; } server { listen 80; listen 443 ssl; server_name morolicio.us; # SSL Config ... location / { proxy_pass http://morolicio.us; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
やっぱりエロいサイトのサーバ立ち上げるならポートにもこだわりたいですね。ぱいおつ最高。