• Nginx配置HTTP跳转到HTTPS


    https 访问我们的测试域名 https://www.xxx.com 站点,但是当我们直接在浏览器地址栏中直接输入 www.xxx.com 的时候却发现进入的是 http 协议的网站,这与我们的初衷不一致。

    由于浏览器默认访问域名使用的是80端口,而当我们使用SSL证书后,网站的端口就变成了443,所以当我们直接在浏览器中输入网址 www.xxx.com 的时候进入的是 80 端口的 HTTP 站点而不是 443 端口的 HTTPS 站点。

    解决方法

    这里提供两种 http 跳转到 https 的方法:

    1. 使用nginx的 rewrite 将请求过来的 http URL直接重写成 https

     

    server {
        listen 80;
        
        #填写绑定证书的域名
        server_name www.xxx.com;
        
        #强制将http的URL重写成https
        rewrite ^(.*) https://$server_name$1 permanent; 
    }

     

    2. 使用301重定向的方式将 http 的请求重定向到 https 上

     

    server {
        listen 80;
        
        #填写绑定证书的域名
        server_name www.xxx.com;
        
        #把http的域名请求转成https
        return 301 https://$host$request_uri;
    }

    完整配置

    #HTTP配置
    server {
        listen 80;
        
        #填写绑定证书的域名
        server_name www.xxx.com;
        
        #(第一种)把http的域名请求转成https
        return 301 https://$host$request_uri;
        
        #(第二种)强制将http的URL重写成https
        rewrite ^(.*) https://$server_name$1 permanent; 
    }
    
    #HTTPS使用SSL访问的配置
    server {
        #SSL使用443端口
        listen 443 ssl;
        
        #SSL证书绑定的单域名
        server_name www.xxx.com;
        
        #证书pem文件
        ssl_certificate /usr/cert/www_xxx_com.pem;
        
        #证书key文件
        ssl_certificate_key /usr/cert/www_xxx_com.key;
        
        #缓存SSL握手产生的参数和加密密钥的时长
        ssl_session_timeout 5m;
        
        #使用的加密套件的类型
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
        
        #表示使用的TLS协议的类型
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        
        #加密套件优先选择服务器的加密套件
        ssl_prefer_server_ciphers on; 
        
        #spa应用配置
        location / {
           root /var/www/mainApp; #配置应用的文件夹
           index index.html index.htm;
           try_files $uri $uri/ /index.html;
        }
    }
     
     
    以上配置成功后执行 nginx -s reload ,然后就可以直接在浏览器中输入 域名 访问 而不是 输入 https://www.xxx.com 才能访问 HTTPS 的站点了, 即:直接通过浏览器输入域名 www.xxx.com 访问网站,进入的就是 HTTPS 的站点。
  • 相关阅读:
    maven 常用编译
    java 秒时间格式化
    git clone 带用户名密码
    Filebeat占用内存和CPU过高问题排查
    新的一周,全新的开始.
    vs2008 打开aspx文件时设计界面死机情况的解决
    php面试题及答案
    JQuery 对html控件操作总结
    网页常用Javascript
    针对修改php_ini不起作用的方案
  • 原文地址:https://www.cnblogs.com/zhaoyingjie/p/16597901.html
Copyright © 2020-2023  润新知