nginx下HTTP跳转HTTPS(阿里云SLB)

首先我有一个域名:domain.com www.domain.com 解析到了阿里云的SLB负载均衡的IP上(公网IP)

其次,SLB的配置为:

https 443  --> http 8080  //加密交给SLB

http 80 --> http 80  (这是常规配置,很少人会在浏览器上打上HTTPS访问吧!)

而阿里云的文档

https://help.aliyun.com/knowledge_detail/6563505.html?spm=0.0.0.0.UOtUEj

HTTP和HTTPS都能访问到WEB内容,也就是说ROOT根目录是一致的,

那。。我希望访问HTTP的时候跳转到HTTPS

所以我的NGINX配置为

server {
    listen 80;
    server_name domain.com www.domain.com;
    rewrite ^/(.*)$ https://www.domain.com/$1 permanent;
    access_log  logs/domain.com.80.log access;
}
server {
    listen 8080;
    server_name www.domain.com domain.com;
    if ($host != 'www.domain.com' ) 
     {
      rewrite ^/(.*)$ https://www.domain.com/$1 permanent;
     }

 

还有一种方法,主要都是为了避免循环重定向的窘态-。-

SLB上:

HTTPS 443 --> HTTP 443

http 80 --> http 80  

NGINX配置

server {
    listen 80;
    server_name domain.com www.domain.com;
    rewrite ^/(.*)$ https://www.domain.com/$1 permanent;
    access_log  logs/domain.com.80.log access;
}
server {
    listen 443;
    server_name www.domain.com domain.com;
    if ($host != 'www.domain.com' ) 
     {
      rewrite ^/(.*)$ https://www.domain.com/$1 permanent;
     }

这下大家有点了解了不?如果按照阿里云的SLB配置文档

https://help.aliyun.com/knowledge_detail/6563505.html?spm=0.0.0.0.UOtUEj

配置成  https 443 --> http 80

             http 80 --> http 80 (这是必须的嘛!)

那就会反复重定向了。。

另外,SLB前端协议如果是HTTPS,那只需要把证书放到阿里云上,ECS后端WEB就不需要配置证书相关信息了。反之,如果SLB前端协议是TCP,那就需要在ECS后端WEB配置SSL信息。

还有,前端是HTTP,后端是HTTPS,则会提示 The plain HTTP request was sent to HTTPS port 

这里讲一下,如果使用TCP该怎么跳转!

ECS做负载均衡需要用户做额外的配置吗?

对于添加到负载均衡实例后端的ECS,原则上不需要进行特别的配置。如果针对关联到负载均衡4层(TCP协议)服务的Linux系统的ECS,如果发现无法正常访问,需要确保系统配置文件/etc/sysctl.conf的以下三项为0:

net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0

如果部署在同一内网网段下的ECS之间有通信需求,且发现有无法通信的情况存在,那么需要检查如下参数的配置是否正确:

net.ipv4.conf.default.arp_announce =2
net.ipv4.conf.all.arp_announce =2

并使用sysctl –p更新配置。

咳咳,然后SLB配置:

TCP 80 --> TCP 80

TCP 443 --> TCP 443

NGINX配置:

server {
    listen 80;
    server_name domain.com www.domain.com;
    rewrite ^/(.*)$ https://www.domain.com/$1 permanent;
    access_log  logs/domain.com.80.log access;
}
server {
    listen 443;
    server_name www.domain.com domain.com;
    if ($host != 'www.domain.com' ) 
     {
      rewrite ^/(.*)$ https://www.domain.com/$1 permanent;
     }

        ssl                  on;
        ssl_certificate      ssl/domain.crt;
        ssl_certificate_key  ssl/domain.key;
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  10m;
        ssl_prefer_server_ciphers   on;
        ssl_protocols        TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers          HIGH:!aNULL:!MD5;
        keepalive_timeout    70;

完成!

最后,可能有的网友不会加证书。

1、创建证书,名字写域名吧;证书类型服务器证书;证书区域对应

2、证书内容,就是你的CRT文件内容;有中间链的会有好几个

-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----

3、证书私钥,需要注意观察,如果你的文件内容是这样的内容

-----BEGIN PRIVATE KEY-----

-----END PRIVATE KEY-----

需要转换,因为阿里云SLB需要的是这种格式

-----BEGIN RSA PRIVATE KEY-----

-----END RSA PRIVATE KEY-----

在KEY文件路径下,把生成的PEM文件内容复制到私钥的框框里

openssl rsa -in domain.com.key -out domain.com.pem

最后的最后

如果我们申请的SSL证书是标准版通配符  生成CSR的时候需要填写*.domain.com;

GODADDY证书购买有一定期限去开通,开通才开始算时间。

转载于:https://my.oschina.net/longquan/blog/706822

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值