nginxで一部のURLだけhttpsにリダイレクトする

高瀬 裕介 309views 更新:2016年4月13日
#元のリクエストがsslかどうか
set $redirect_ssl $scheme;

#/sslcontentへのアクセスはSSLにリダイレクト
if ($request_uri ~ "^/sslcontent/?$") {
    set $redirect_ssl "${redirect_ssl}tos";
}

#静的ファイルはリダイレクトしない
if ($request_filename ~ "\.(less|txt|css|js|jpg|jpeg|gif|ico|png|bmp|pict|csv|doc|pdf|pls|ppt|tif|tiff|eps|ejs|swf|midi|mid|ttf|eot|woff|otf|svg|svgz|webp|docx|xlsx|xls|pptx|ps|class|jar)$") {
    set $redirect_ssl "ignore";
}

location / {
    #...
    if ($redirect_ssl = "httptos") {
        return 301 https://$host$request_uri;
    }

    # 他のページに移動したらhttpにリダイレクト
    if ($redirect_ssl = "https") {
        return 301 http://$host$request_uri;
    }        
    #...
}

値をsetするだけでreturnもrewriteもしない部分をlocation の中に書くとtry_filesが効かなくなったりいろいろヤバイ

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません