Syntax Error.

[Sy] nginxでhttpへのアクセスをhttpsにリダイレクトさせるための設定

2015/07/17

nginx(リバースプロキシとして利用)でhttp://へのアクセスをhttps://にリダイレクトさせるための設定について。

まずはhttpsのみのアクセスを受け付ける設定の/etc/nginx/nginx.confがこうだとして、

server {
    listen 443;
    ssl on;
    ssl_certificate /etc/pki/CA/example.crt;
    ssl_certificate_key /etc/pki/CA/example.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    server_name www.example.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

このままだとhttp(80番ポート)へのアクセスを受けられないので、以下の部分を追記して80番ポートへのアクセスをすべてhttpsとしてリダイレクトさせるように設定します。

# ↓ここから
server {
    listen 80 default;
    server_name www.example.com;
    return 301 https://$host$request_uri;
}
# ↑ここまで
server {
    listen 443;
    ssl on;
    ssl_certificate /etc/pki/CA/example.crt;
    ssl_certificate_key /etc/pki/CA/example.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    server_name www.example.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

そしてnginxを再起動してあげればOKです。

$ sudo /etc/init.d/nginx restart

関連記事