zoukankan      html  css  js  c++  java
  • 网站通信协议升级到HTTPS&HTTP2

    为何要升级到HTTPS和HTTP2?

    http://baijiahao.baidu.com/s?id=1602041305989767011&wfr=spider&for=pc

    https://www.jianshu.com/p/67c541a421f9

    https://segmentfault.com/a/1190000019891825

    HTTPS

    一、所需条件

    • 域名
    • Web服务器(Nginx,Apache,IIS都行)
    • SSL证书(可通过腾讯云、阿里云等申请)
    • 需要Nginx支持SSL(命令nginx -V中,如果出现 ‘-with-http_ssl_module’ 字样即可)

    二、操作步骤

    1. 登录阿里云购买免费SSL证书并申请
    2. 下载证书,上传至服务器
    3. Nginx配置HTTPS服务
    4. 重定向
    5. 重启Nginx服务
    6. 将html中所有的外链资源(如img,css,js,媒体标签等)url置为https

    三、具体操作

     1.登录阿里云购买免费SSL证书(https://www.aliyun.com/product/cas?utm_content=se_1001656059

      阿里云免费型DV SSL有效期1年,购买后填写一些信息,提交申请,即可等待签发。在这里表扬一下阿里云,秒速签发。

      在这里讲一下,域名验证类型可选择自动DNS、手动DNS和文件验证,在这里我选择的是自动的;CSR生成方式选择系统生成。

      验证阶段,根据提示,要将域名添加一条DNS解析记录,这里要注意,要去申请域名的网站去操作。比如我的服务器买的阿里云,域名在新网买的,所以要去新网去设置,而不是在阿里云。 

     2.下载SSL证书并上传至服务器

      选择Nginx版本证书,在nginx安装目录(一般在/etc/nginx)中新建文件夹(cert),放置证书

     3.Nginx配置HTTPS服务

    server { # 这个server标识我要配置了
        listen 80 default_server;       # 我要监听那个端口
        listen [::]:80 default_server;
        server_name xxx.cn ;      # 你访问的路径前面的url名称
        access_log /var/log/nginx/access.log main; # Nginx日志配置
        charset utf-8; # Nginx编码
        gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json   image/jpeg image/gif image/png application/octet-stream; # 支持压缩的类型
      
        # 注意添加下面这行代码,用于重定向
        return 301 https://$server_name$request_uri;
    
        error_page 404 /404.html; # 错误页面
        error_page 500 502 503 504 /50x.html; # 错误页面
      
        # 指定项目路径uwsgi
        location / { # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
            include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
            uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
            uwsgi_pass unix:/data/wwwroot/script/uwsgi.sock; # 指定uwsgi的sock>文件所有动态请求就会直接丢给他
        }
        # 指定静态文件路径
        location /static/ {
            alias /data/wwwroot/maci_proj/static/;
            #index index.html index.htm;
        }
    }
    
            
    server {
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;    
        server_name www.xxxxx.cn ;    
        access_log /var/log/nginx/access.log main; # Nginx日志配置
        charset utf-8; # Nginx编码
        gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json   image/jpeg image/gif image/png application/octet-stream; # 支持压缩的类型
    
        ssl_certificate /etc/nginx/cert/2050124_xxx.pem;   # pem文件
        ssl_certificate_key /etc/nginx/cert/2050124_xxx.key; # key文件
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
    
        error_page 404 /404.html; # 错误页面
        error_page 500 502 503 504 /50x.html; # 错误页面
    
        # 指定项目路径uwsgi
        location / { # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
            include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
            uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
            uwsgi_pass unix:/data/wwwroot/script/uwsgi.sock; # 指定uwsgi的sock>文件所有动态请求就会直接丢给他
        }
        # 指定静态文件路径
        location /static/ {
            alias /data/wwwroot/maci_proj/static/;
            #index index.html index.htm;
        }
    }
    

     4.重定向

       将所有http请求重定向为https,如上面配置所述。

       有三种重定向方式:

    • rewrite ^/(.*)$ https://example.com/$1;
    • rewrite ^ https://example.com$request_uri? permanent;
    • return 301 https://example.com$request_uri;

       唯一的区别:正则匹配的性能。第三种性能最优,第一种差一些。然而对于业余的我,完全体会不到。

     5.重启Nginx服务

    nginx -t
    nginx -s reload

     6.前端页面外链资源url全部改成https协议

      否则浏览器仍会提示不安全的连接

      

       对于这些资源,能够使用https的则使用,如果不能使用可以将其下载到自己的服务器上。

    HTTP2

    一、所需条件

     1、openssl 1.0.2+

    openssl version  //查看版本的命令

      2、升级HTTPS

    · 3.Nginx 1.9.5+ 且 支持

    nginx -V  # 查看版本

    二、修改Nginx配置文件

     原本的https的listen为

    listen 443 ssl;

     现在在后面加上http2:

    listen 443 ssl http2 default_server;

     重启Nginx

    nginx -t
    nginx -s reload

     在浏览器中可以查看到协议

     FireFox

       

     chrome

       

  • 相关阅读:
    字符串内部查找函数
    vs2005 编译zlib 1.2.3 小记
    ies4linux 安装
    详述IP数据包的转发流程
    看源代码
    091213
    值得你记住并受用一生的Word XP/2003快捷键
    java开源框架的源代码怎么读?
    excel中的EMBED域介绍
    如何用c语言实现CString的构造函数、析构函数和赋值函数?
  • 原文地址:https://www.cnblogs.com/V587Chinese/p/10692848.html
Copyright © 2011-2022 走看看