rails+nginxでアプリケーションを作っているものですが、force_sslがうまく機能しません。
具体的に言うと、1度目のhttpsリダイレクトはうまくいくのですが、その画面上でurlをhttpに変えても表示できてしまいます。
同一画面上で「https」状態のurlをhttpに変更してリロードした際にもう一度「https」接続にリダイレクトされるようにしたいのですが、どうすれば良いでしょうか。
よろしくお願いいたします。
#admin_controller.rb
before_action :force_ssl, if: :ssl_configured?
#application_controller.rb
def ssl_configured?
(Rails.env.production? || Rails.env.staging? ) && request.env['HTTP_X_FORWARDED_FOR'].present? && !(request.ssl?)
end
#nginx 部分抜粋
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://air_beyond;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-FORWARDED_PROTO https;
proxy_set_header Host $http_host;
proxy_redirect off;
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。