前言

其实 HTTP/2 应该是 2015 年的老话题了(2015 年 5 月 14 日 HTTP/2 协议正式版的发布),但是 2018 年都到了很多网站依旧没有使用,作为新一代互联网协议,HTTP/2 不仅速度比目前常见的 HTTP/1.1 更快,而且更加安全。 不过,也正是因为安全(依赖 HTTPS)所以 HTTP/2 的设置略为复杂导致很多网站都没有用上。

这里就将为大家介绍如何 10分钟 轻松设置出 HTTP/2 网站。

介绍

HTTP 2.0 即超文本传输协议 2.0,是下一代 HTTP 协议。是由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis (httpbis)工作小组进行开发。是自1999年http1.1发布后的首个更新。

HTTP/2 协议是从 SPDY 演变而来,SPDY 已经完成了使命并很快就会退出历史舞台(例如 Chrome 将在「2016 年初结束对 SPDY 的支持」;Nginx、Apache 也已经全面支持 HTTP/2 ,并也不再支持 SPDY)。

一般的大家把 HTTP2 简称为 h2,尽管有些朋友可能不怎么愿意,但是这个简称已经默认化了,特别是体现在浏览器对 HTTP2 都是这个简写的。

要求 & 收获

需要使用到的产品:

  1. ECS/轻量应用服务器(安装任意 Linux 发行版镜像)
  2. SSL 证书 (Let's Encrypt 证书 或者 阿里云免费提供的赛门铁克证书

通过本文你将讲学到:

  1. 设置 Nginx 的 HTTPS 操作
  2. 设置 Nginx 的 HTTP/2 操作
  3. 拥有一个 HTTP/2 网站

如果你是大学生且还没有 ECS,可以使用:

云翼计划

学生用户可以在阿里云官网上进行学生认证后购买一定配置的ECS,仅需9.9元每月,学生用户无需担心花费过多用在服务器的问题。

学生用户在经过学生认证过后就可以在相关网址进行购买,网址为:

https://promotion.aliyun.com/ntms/campus2017.html

买好了服务器就可以去刚刚注册好的账号管理里的管理控制台去查看服务器以及它的一些配置。

如果你有较好的芝麻信用分记录且还没有 ECS,可以使用:

阿里云免费套餐:

个人新用户可以在 云栖社区聚能聊 获取免费产品邀请码(还有其他丰厚礼品),免费体验 7 款阿里云明星产品六个月的使用资格:https://free.aliyun.com/

企业新用户完成企业认证可以可以费体验 10 款阿里云明星产品六个月的使用资格:https://free.aliyun.com/

教程

一、 参考 【云计算的1024种玩法】手把手教你如何编译升级 OpenResty 编译 OpenResty 软件作为 Web 服务器软件,教程还是比较简单的。

二、 首先申请 SSL 证书,HTTPS 依赖于 SSL 证书,可以通过 (【云计算的1024种玩法】使用阿里云解析 + RAM 快速签署 Let's Encrypt 证书 或者 阿里云免费提供的赛门铁克证书) 这两个教程来申请证书。 预计耗时 8 分钟。

三、 做完准备工作,我们就要开始为虚拟主机设置 HTTPS + HTTP/2 了!

这里我们以 www.mf8.biz 为例,下面是 HTTPS 虚拟主机配置文件:

  1. server {
  2. ##开启 HTTPS 和 HTTP/2
  3. listen 443 ssl http2;
  4. ssl_certificate /usr/local/openresty/nginx/conf/ssl/www.mf8.biz.crt; #改为SSL证书绝对路径位置
  5. ssl_certificate_key /usr/local/openresty/nginx/conf/ssl/www.mf8.biz.key; #改为SSL密钥绝对路径位置
  6. ##SSL增强安全设置部分
  7. add_header Strict-Transport-Security max-age=15768000; #HSTS设置
  8. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  9. ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
  10. ssl_prefer_server_ciphers on;
  11. ssl_session_timeout 10m;
  12. ssl_session_cache builtin:1000 shared:SSL:10m;
  13. ssl_buffer_size 1400;
  14. ssl_stapling on;
  15. ssl_stapling_verify on;
  16. ### 下面的部分根据网站需求为异,只要上面的内容有基本上都能兼容各种网站的 HTTPS 设置
  17. server_name www.mf8.biz mf8.biz; # 改为您自己的域名
  18. access_log off;
  19. index index.html index.htm index.php;
  20. root /data/wwwroot/mf8; # 改为您自己的网站目录位置
  21. ##PHP
  22. location ~ [^/]\.php(/|$) {
  23. fastcgi_pass unix:/run/php/php7.1-fpm.sock; ## 改为您自己的 php-fpm 版本号
  24. fastcgi_index index.php;
  25. include fastcgi.conf;
  26. fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/:/proc/";
  27. }
  28. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
  29. expires 30d;
  30. access_log off;
  31. }
  32. location ~ .*\.(js|css)?$ {
  33. expires 7d;
  34. access_log off;
  35. }
  36. location ~ /\.ht {
  37. deny all;
  38. }
  39. }

将配置文件中的所有带 # 的注释中所在的行,改为您自己的域名、文件路径等内容。 然后保存到 /usr/local/openresty/nginx/vhost/您的域名.conf 文件中。

通过:

  1. nginx -t

命令查看配置是否正确,如果有错误就根据提示文件所在的行修改错误内容。没有错误提示的话,重启即可:

  1. nginx -s reload

预计耗时 2 分钟。

跑分

然后我们可以到 https://www.ssllabs.com/index.html 可以对进行网站 HTTPS 的跑分测试,并检查 HTTP/2 对各环境的兼容性,根据我提供的配置文件这么一番下来肯定是 A+!

10分钟轻松设置出 A+ 评分的 HTTP/2 网站的更多相关文章

  1. 10分钟轻松学会python turtle绘图

     1. 画布(canvas) 1.1 相关函数: 2. 画笔 2.1 画笔的状态 2.2 画笔的属性 2.3 绘图命令 3. 命令详解 4. 绘图举例 4.1 太阳花 4.2 绘制小蟒蛇 4.3 绘 ...

  2. 使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取

    web scraper 下载:Web-Scraper_v0.2.0.10 使用 Chrome 浏览器插件 Web Scraper 可以轻松实现网页数据的爬取,不写代码,鼠标操作,点哪爬哪,还不用考虑爬 ...

  3. 10分钟轻松学会 Python turtle 绘图

    python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是python的内部库,使用导入即可 import turtle 先说明一下turtl ...

  4. 10 分钟轻松学会 Jackson 反序列化自动适配子类

    作者:丁仪 来源:https://chengxuzhixin.com/blog/post/Jackson-fan-xu-lie-hua-zi-dong-shi-pei-zi-lei.html json ...

  5. CBrother脚本10分钟写一个拯救“小霸王服务器”的程序

    CBrother脚本语言10分钟写一个拯救“小霸王服务器”的程序 到了一家新公司,接手了一坨c++服务器代码,到处内存泄漏,这服务器没有数据库,挂了后重启一下就好了,公司就这么凑活着用了几年了,定时重 ...

  6. 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange

    如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...

  7. Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库

    前言     在 .Net Core 2.2中 Microsoft.AspNetCore.App 默认内置了EntityFramework Core 包,所以在使用过程中,我们无需再从 NuGet 仓 ...

  8. 为什么 Windows 10 无论怎么设置一分钟后就自动关屏幕?

    为什么 Windows 10 无论怎么设置一分钟后就自动关屏幕? 在设置中设置了很多方法,但不管怎么设置就是不行,不到一分钟一定关屏幕. 开始以为是能源之星引起,查了相关资料说不是,那个能源之星标志只 ...

  9. 不用搭环境的10分钟AngularJS指令简易入门01(含例子)

    不用搭环境的10分钟AngularJS指令简易入门01(含例子) `#不用搭环境系列AngularJS教程01,前端新手也可以轻松入坑~阅读本文大概需要10分钟~` AngularJS的指令是一大特色 ...

随机推荐

  1. C#.NET常见问题(FAQ)-override覆盖和virtual虚类如何理解

    父类使用virtual关键字,可以让子类的实例完全代替基类的类成员.(前面父类virtual后面子类override),比如下面我定义一个Employee的员工的基类,给这个基类定义了Start_Wo ...

  2. 在Windows中监视IO性能

    附:在Windows中监视IO性能 本来准备写一篇windows中监视IO性能的,后来发现好像可写的内容不多,windows在细节这方面做的不是那么的好,不过那些基本信息还是有的. 在Windows中 ...

  3. Python取得系统进程列表

    一.上代码 import psutil for proc in psutil.process_iter(): try: pinfo = proc.as_dict(attrs=['pid', 'name ...

  4. C# Directory.GetFiles()获取多个类型格式的文件

    第一种方式 System.IO.Directory.GetFiles()获取多个类型格式的文件 System.IO.Directory.GetFiles("c:\","( ...

  5. 微信小程序尝鲜一个月现状分析

    概述 曾记得在微信小程序还没有上线的时候,大家都是翘首以待.希望在张小龙,在企鹅的带领下,走出差别于原生开发的还有一条移动开发的道路,我也是一直关注着.知道1月9号,微信小程序最终对外开放了,作为第一 ...

  6. 安装MySQL-python报错:_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory或者 build\lib.win-amd64-2.7\_mysql.pyd : fatal error LNK1120: 56 unresolved externa

    解决办法1: 直接下载MySQL-python-1.2.5.win-amd64/32-py2.7.exe,点击安装 此处要注意自己安装的Python和MySQL版本是64位还是32位,否则在进行安装M ...

  7. linux下时间有关的函数和结构体

    1.时间类型.Linux下常用的时间类型有6个:time_t,struct timeb, struct timeval,struct timespec,clock_t, struct tm. (1) ...

  8. Web Storage与Cookie相比存在的优势:

    (1).存储空间更大:IE8下每个独立的存储空间为10M,其他浏览器实现略有不同,但都比Cookie要大很多. (2).存储内容不会发送到服务器:当设置了Cookie后,Cookie的内容会随着请求一 ...

  9. js setTimeout setInterval 第三个参数说明

    1.api setTimeout: https://developer.mozilla.org/zh-CN/docs/Web/API/Window/setTimeout var timeoutID = ...

  10. 12、java5锁java.util.concurrent.locks.Lock之ReentrantLock

    JDK文档描述: public interface LockLock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作.此实现允许更灵活的结构,可以具有差别很大的属性,可 ...