透视HTTP协议
罗剑锋(Chrono)
奇虎360技术专家,Nginx/OpenResty开源项目贡献者
立即订阅
6077 人已学习
课程目录
已完结 44 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词|To Be a HTTP Hero
免费
破冰篇 (7讲)
01 | 时势与英雄:HTTP的前世今生
02 | HTTP是什么?HTTP又不是什么?
03 | HTTP世界全览(上):与HTTP相关的各种概念
04 | HTTP世界全览(下):与HTTP相关的各种协议
05 | 常说的“四层”和“七层”到底是什么?“五层”“六层”哪去了?
06 | 域名里有哪些门道?
07 | 自己动手,搭建HTTP实验环境
基础篇 (7讲)
08 | 键入网址再按下回车,后面究竟发生了什么?
09 | HTTP报文是什么样子的?
10 | 应该如何理解请求方法?
11 | 你能写出正确的网址吗?
12 | 响应状态码该怎么用?
13 | HTTP有哪些特点?
14 | HTTP有哪些优点?又有哪些缺点?
进阶篇 (8讲)
15 | 海纳百川:HTTP的实体数据
16 | 把大象装进冰箱:HTTP传输大文件的方法
17 | 排队也要讲效率:HTTP的连接管理
18 | 四通八达:HTTP的重定向和跳转
19 | 让我知道你是谁:HTTP的Cookie机制
20 | 生鲜速递:HTTP的缓存控制
21 | 良心中间商:HTTP的代理服务
22 | 冷链周转:HTTP的缓存代理
安全篇 (7讲)
23 | HTTPS是什么?SSL/TLS又是什么?
24 | 固若金汤的根本(上):对称加密与非对称加密
25 | 固若金汤的根本(下):数字签名与证书
26 | 信任始于握手:TLS1.2连接过程解析
27 | 更好更快的握手:TLS1.3特性解析
28 | 连接太慢该怎么办:HTTPS的优化
29 | 我应该迁移到HTTPS吗?
飞翔篇 (4讲)
30 | 时代之风(上):HTTP/2特性概览
31 | 时代之风(下):HTTP/2内核剖析
32 | 未来之路:HTTP/3展望
33 | 我应该迁移到HTTP/2吗?
探索篇 (5讲)
34 | Nginx:高性能的Web服务器
35 | OpenResty:更灵活的Web服务器
36 | WAF:保护我们的网络服务
37 | CDN:加速我们的网络服务
38 | WebSocket:沙盒里的TCP
总结篇 (2讲)
39 | HTTP性能优化面面观(上)
40 | HTTP性能优化面面观(下)
答疑篇 (2讲)
41 | Linux/Mac实验环境搭建与URI查询参数
42 | DHE/ECDHE算法的原理
结束语 (1讲)
结束语 | 做兴趣使然的Hero
透视HTTP协议
登录|注册

41 | Linux/Mac实验环境搭建与URI查询参数

Chrono 2019-10-09
你好,我是 Chrono。
先要说一声“抱歉”。由于工作比较紧张、项目实施频繁出差,导致原本预定的“答疑篇”迟迟没有进展,这次趁着“十一”长假,总算赶出了两期,集中回答几个同学们问得比较多的问题:Linux/Mac 实验环境搭建(第 7 讲),URI 查询参数(第 11 讲),还有 DHE/ECDHE 算法的原理(第 26 讲),后续有时间可能还会再陆续补充完善。
很高兴在时隔一个多月后与你再次见面,废话不多说了,让我们开始吧。

Linux 上搭建实验环境

我们先来看一下如何在 Linux 上搭建课程的实验环境。
首先,需要安装 OpenResty,但它在 Linux 上提供的不是 zip 压缩包,而是各种 Linux 发行版的预编译包,支持常见的 Ubuntu、Debian、CentOS 等等,而且官网上有非常详细安装步骤。
以 Ubuntu 为例,只要“按部就班”地执行下面的几条命令就可以了,非常轻松:
# 安装导入GPG公钥所需的依赖包:
sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates
# 导入GPG密钥:
wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
# 安装add-apt-repository命令
sudo apt-get -y install --no-install-recommends software-properties-common
# 添加官方仓库:
sudo add-apt-repository -y "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main"
# 更新APT索引:
sudo apt-get update
# 安装 OpenResty
sudo apt-get -y install openresty
全部完成后,OpenResty 会安装到“/usr/local/openresty”目录里,可以用它自带的命令行工具“resty”来验证是否安装成功:
$resty -v
resty 0.23
nginx version: openresty/1.15.8.2
built with OpenSSL 1.1.0k 28 May 2019
有了 OpenResty,就可以从 GitHub 上获取 http_study 项目的源码了,用“git clone”是最简单快捷的方法:
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《透视HTTP协议》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(8)

  • GitHubGanKai
    真好,又见到你了,而且我最近换个了mac,😊正愁这个。

    作者回复: we meet again.

    2019-10-09
    2
  • dongge
    老师好,
    按文章指导搭建了MAC的环境:
    openresty -v
    nginx version: openresty/1.11.2.2

    在~/git/http_study/www目录下执行
     ./run.sh start
    Password:
    nginx: [emerg] "/Users/xiaodong/git/http_study/www/conf/ssl/ticket.key" must be 48 bytes in /Users/xiaodong/git/http_study/www/conf/nginx.conf:34
    报了这个错误,在网上google没找到解决方法。
    尝试在nginx.conf中注销相关代码,也会报其他错误。
    老师能指点一下吗?

    作者回复: 这是提示Nginx要求48字节的密钥文件,按理说附带的80字节也是可以的,你可以用命令“openssl rand 48 > ticket.key”重新生成www/conf/ssl/ticket.key。

    详细可参见http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_tickets

    另外,你用的openresty版本太老了,用最新的1.15.8.2可能就不会出现这样的问题。

    2019-10-18
    1
    1
  • 无名
    Updating Homebrew...
    ==> Auto-updated Homebrew!
    Updated 1 tap (homebrew/core).
    ==> Updated Formulae
    handbrake

    ==> Installing openresty from openresty/brew
    ==> Downloading https://openresty.org/download/openresty-1.15.8.2.tar.gz
    Already downloaded: /Users/hejunbin/Library/Caches/Homebrew/downloads/4395089f0fd423261d4f1124b7beb0f69e1121e59d399e89eaa6e25b641333bc--openresty-1.15.8.2.tar.gz
    ==> ./configure -j8 --prefix=/usr/local/Cellar/openresty/1.15.8.2 --pid-path=/us
    Last 15 lines from /Users/hejunbin/Library/Logs/Homebrew/openresty/01.configure:
    DYNASM host/buildvm_arch.h
    HOSTCC host/buildvm.o
    HOSTLINK host/buildvm
    BUILDVM lj_vm.S
    BUILDVM lj_ffdef.h
    BUILDVM lj_bcdef.h
    BUILDVM lj_folddef.h
    BUILDVM lj_recdef.h
    BUILDVM lj_libdef.h
    BUILDVM jit/vmdef.lua
    make[1]: *** [lj_folddef.h] Segmentation fault: 11
    make[1]: *** Deleting file `lj_folddef.h'
    make[1]: *** Waiting for unfinished jobs....
    make: *** [default] Error 2
    ERROR: failed to run command: gmake -j8 TARGET_STRIP=@: CCDEBUG=-g XCFLAGS='-msse4.2 -DLUAJIT_NUMMODE=2 -DLUAJIT_ENABLE_LUA52COMPAT' CC=cc PREFIX=/usr/local/Cellar/openresty/1.15.8.2/luajit

    If reporting this issue please do so at (not Homebrew/brew or Homebrew/core):
      https://github.com/openresty/homebrew-brew/issues

    These open issues may also help:
    Can't install openresty on macOS 10.15 https://github.com/openresty/homebrew-brew/issues/10
    Fails to install OpenResty https://github.com/openresty/homebrew-brew/issues/5
    The openresty-debug package should use openresty-openssl-debug instead https://github.com/openresty/homebrew-brew/issues/3

    macOS 10.15.1 安装失败。参考给出的链接也没有解决问题,求老师解惑。

    作者回复: 10.15是新出的,我没升级,看这些信息像是openresty在这上面安装有问题(luajit编译失败),可以向官方反应一下,只能期待官方更新包了。

    2019-11-15
    1
  • SmNiuhe
    这个大家有遇到嘛,是不是资源的问题
    brew install openresty/brew/openresty :DownloadError: Failed to download resource "openresty-openssl--patch"
    Download failed: https://raw.githubusercontent.com/openresty/openresty/master/patches/openssl-1.1.0d-sess_set_get_cb_yield.patch

    作者回复: 如果mac安装有问题,可以用virtualbox装个Linux虚拟机,暂解燃眉之急。

    2019-11-07
  • Dream.
    Linux-CentOS 7下,修改了/etc/hosts的域名与IP的映射关系后

    再使用./run.sh start启动OpenResty之后

    curl localhost 或者 curl http://www.chrono.com都是返回403

    按之前课程里的url访问https://www.chrono.com/11-1什么的,都返回404

    第一次接触OpenResty,麻烦老师回复下是哪里没配置好嘛?

    作者回复: 我这里没有遇到你这样的现象。

    先用run.sh list看看Nginx进程是否正常运行,然后用netstat等工具检查一下监听端口,是否有防火墙什么的其他应用阻碍了服务。

    可以问问周围熟悉Linux运维的同事。

    2019-10-17
  • dongge
    这个专栏这么好玩,留言的人这么少,真可惜。

    作者回复: 答疑篇来的太晚了,没赶上当初的热度,不过总会有需要的同学看到的。

    2019-10-16
  • 许童童
    老师又来了,很高兴再次见到老师。

    作者回复: nice to meet you again.

    2019-10-13
  • 果果
    当初费了好些时间,才在mac上搭建了环境

    作者回复: 这篇答疑来晚了,实在是抱歉。

    2019-10-09
收起评论
8
返回
顶部