dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2186
  • 铜币13612枚
  • 威望5957点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:2926回复:0

[阿里云] SLB http 强制跳转到 https

楼主#
更多 发布于:2016-05-25 10:48
目标
阿里云 SLB ,配合后端ECS 上的Nginx 服务器,完成 http to https 301 强制跳转;

背景
原有方式为 haproxy 负载均衡器完成,http to https 301跳转,但是阿里云 slb 不支持此功能,只能通过后端ECS 上的web 服务器完成;

原有方式
Haproxy (http to https 301)-> Nginx  
Nginx 不需要做任何处理;

阿里云SLB
SLB -> Nginx(http to https 301)
SLB 监听 80/443端口,Nginx 监听 80/443(不需要配置ssl证书)

大坑

不过这里有个坑,在创建 slb 添加https 监听时,注意后端端口一定要使用 443端口(非80),而不是默认的80 端口,在这个坑了爬了好久,因为使用默认的80 端口后,nginx 配置 http to https 301 进入无限循环,50次后强制退出,这点阿里云真的很low ,在SLB上加一个301跳转技术真的无法实现吗?

解决方法
SLB

图片:aliyun-slb-https.png



Nginx
# 虚拟主机 80 端口
server
{
    listen      80;
    server_name  b.ywwd.net;
    index index.php index.shtml index.html;
    root  /var/www/html/;
    error_page 404 /404.html;
          
    #
    add_header Strict-Transport-Security max-age=15768000;
    return 301 https://$server_name$request_uri;
}

# 虚拟主机 443 端口      
server
{
    listen      443;
    server_name  b.ywwd.net;
    index index.php index.shtml index.html;
    root  /var/www/html/;
    error_page 404 /404.html;
      
    #更改后重启nginx
    #省略...
}

参考:
https://segmentfault.com/q/1010000006994159
#
游客

返回顶部