Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
107
Help us understand the problem. What is going on with this article?
@snoguchi

AWSのELBとNginxでhttpアクセスをhttpsにリダイレクトしたい

More than 5 years have passed since last update.

はじめに

ELB上でSSL証明書の設定をしている状態で、http(80)で来たアクセスをhttps(443)に転送したい話しです。

困った事

httpsでサービスを展開したいので、httpアクセスはhttpsにリダイレクトしようと思って、こちらを参考にNginxのconfにreturn 301 https://$host$request_uri;を書いてみました。

しかし、ELBで443を80に転送される設定がある状態でこれを書くと、当たり前の話しですがリダイレクトループが発生します。

状況として
①80で待ってるNginxにアクセスが来る
returnの設定に従ってhttps(443)に転送 (つまりELBに戻る)
③また①に戻る
これが繰り返されます

やった事

ELBでリダイレクトされるとX-Forwarded-Protoというヘッダーを持ってNginxに到達します。

X-Forwarded-Proto: https

詳細はこちら↓
Elastic Load Balancing の X-Forwarded ヘッダーの詳細

これを使ってhttpかhttpsか?を判断して、httpの時だけリダイレクトするようにしました。

server {
    listen       *:80;
    server_name  aaa.com;
    root   /var/www/;
    index  index.php index.html;

    # ここの部分で判定!!
    if ($http_x_forwarded_proto != https) {
      return 301 https://$host$request_uri;
    }
}
107
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
snoguchi
willgroup
個と組織をポジティブに変革する「チェンジエージェントグループ」

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
107
Help us understand the problem. What is going on with this article?