nginx http到https重定向问题

时间:2015-08-30 23:14:17

标签: linux nginx https subdomain amazon-elb

我正在尝试将http://example.comhttps://example.comhttp://www.example.com重定向到https://www.example.com。服务器通过ELB通过443端口侦听http和https请求。

nginx config:

git add --all

只有http://example.comhttps://www.example.com按预期工作。但http://www.example.com将进入无限重定向循环。

配置文件可能出错。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

创建server块来处理重定向。

server {
    listen 80;
    server_name www.example.com example.com;
    return 301 https://www.example.com$request_uri;
}
server {
    listen 443;
    server_name example.com;
    return 301 https://www.example.com$request_uri;
}
server {
    listen 443;
    server_name www.example.com;
    // ...
}

更新1:

使用X-Forwarded-Proto request标头可帮助您识别客户端用于连接服务器的协议(HTTP或HTTPS)。

server {
    listen 443;
    server_name example.com;
    return 301 https://www.example.com$request_uri;
}
server {
    listen 443;
    server_name www.example.com;
    if ($http_x_forwarded_proto = 'http') {
        return 301 https://www.example.com$request_uri;
    }
    // ...
}

来源:http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/x-forwarded-headers.html