成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Swoft| Swoft官網(wǎng)全站 HTTP2 實(shí)踐

stdying / 994人閱讀

摘要:官網(wǎng)全站實(shí)踐正式來襲也迎來自己的一個(gè)里程碑?dāng)?shù)正式突破官網(wǎng)作為項(xiàng)目組服務(wù)開發(fā)者們的重要渠道也迎來了自己的一次重大更新重構(gòu)升級(jí)到全站實(shí)現(xiàn)本篇先介紹官網(wǎng)全站實(shí)踐先來一張官網(wǎng)效果圖鎮(zhèn)樓靜態(tài)資源由托管開啟業(yè)務(wù)代碼交由執(zhí)行設(shè)置使用協(xié)議要實(shí)現(xiàn)非常簡(jiǎn)單

date: 2018-3-8 13:50:03
title: Swoft| Swoft官網(wǎng)全站 HTTP2 實(shí)踐

Swoft1.0正式來襲, Swoft 也迎來自己的一個(gè)里程碑, star數(shù)正式突破 1k. Swoft官網(wǎng)作為項(xiàng)目組服務(wù)開發(fā)者們的重要渠道, 也迎來了自己的一次重大更新:

重構(gòu), 升級(jí)到 Swoft1.0

全站實(shí)現(xiàn)HTTP2

本篇先介紹 Swoft官網(wǎng)全站 HTTP2 實(shí)踐

先來一張 Swoft 官網(wǎng) 效果圖鎮(zhèn)樓:

靜態(tài)資源由 nginx 托管, 開啟 http2

業(yè)務(wù)代碼交由 Swoft 執(zhí)行, 設(shè)置 SwooleHttpServer 使用 HTTP2 協(xié)議

要實(shí)現(xiàn) HTTP2 非常簡(jiǎn)單:

nginx 開啟 HTTP2

Swoft 開啟 HTTP2

nginx + Swoft 配合使用

福利: 域名證書申請(qǐng) 輕松指南

nginx 開啟 HTTP2

首先查看 nginx 中是否開啟了 HTTP2 module(模塊)

# -V: show version and configure options then exit
/var/www # nginx -V

# 新版 nginx 默認(rèn)開啟了 HTTP2: --with-http_v2_module
nginx version: nginx/1.13.8
built by gcc 6.2.1 20160822 (Alpine 6.2.1)
built with OpenSSL 1.0.2n  7 Dec 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-http_slice_module --with-mail --with-mail_ssl_module --with-compat --with-file-aio
--with-http_v2_module

nginx 開啟 HTTP2 配置示例, 可以在我的開源項(xiàng)目-docker中查看到示例:

# http2
server {
    listen 80;
    server_name www.daydaygo.top;
    # 將 HTTP 請(qǐng)求強(qiáng)制跳轉(zhuǎn)到 HTTPS
    rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
    # 開啟 HTTP2
    listen 443 ssl http2 default_server;
    server_name www.daydaygo.top;

    # 證書極簡(jiǎn)設(shè)置
    ssl on;
    ssl_certificate daydaygo.top.crt;
    ssl_certificate_key daydaygo.top.key;

    root /var/www/https_test;
    index index.php index.html;
    location / {}
    location ~ .php$ {
        fastcgi_pass fpm:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
Swoft 開啟 HTTP2

Swoole 開啟 HTTP2, 可以參考 Swoft 提供的 Dockerfile

# Debian系Linux
apt-get install -y libssl-dev libnghttp2-dev

# Swoole 添加編譯參數(shù)
./configure --enable-async-redis --enable-mysqlnd --enable-coroutine --enable-openssl --enable-http2

Swoft 配置中開啟 HTTP2, 參考 .env.example 文件

# 默認(rèn)配置
OPEN_HTTP2_PROTOCOL=false
SSL_CERT_FILE=/path/to/ssl_cert_file
SSL_KEY_FILE=/path/to/ssl_key_file

# 開啟 HTTP2: 這里是將證書放到項(xiàng)目 resource/ 目錄下
OPEN_HTTP2_PROTOCOL=true
SSL_CERT_FILE=@res/ssl/ssl_cert_file
SSL_KEY_FILE=@res/ssl/ssl_key_file
nginx 配合 Swoft 使用

nginx 配合 Swoft 使用, 類似 nginx+fpm 配置即可, 代碼示例可以參考 我的開源項(xiàng)目-docker

# swoft-site
server {
  listen 80;
  server_name swoft.daydaygo.top;
  # 將 HTTP 請(qǐng)求強(qiáng)制跳轉(zhuǎn)到 HTTPS
  rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
  # 開啟 HTTP2
  listen 443 ssl http2;
  server_name swoft.daydaygo.top;

  # 證書極簡(jiǎn)配置
  ssl on;
  ssl_certificate 1_swoft.daydaygo.top_bundle.crt;
  ssl_certificate_key 2_swoft.daydaygo.top.key;

  root /var/www/swoole/swoft-offcial-site/public;
  index index.php index.html;
  error_log /var/log/nginx/swoft-site.error.log;
  access_log /var/log/nginx/swoft-site.access.log;

  # nginx 轉(zhuǎn)發(fā)請(qǐng)求給 swoft
  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Connection "keep-alive";
    proxy_pass https://swoft:9501;
  }
  location ~ .php(.*)$ {
    proxy_pass https://swoft:9501;
  }

  # nginx 托管靜態(tài)文件
  location ~* .(js|map|css|png|jpg|jpeg|gif|ico|ttf|woff2|woff)$ {
    expires       max;
  }
}
福利: 域名證書申請(qǐng) 輕松指南

先確認(rèn)你知道關(guān)于域名的幾個(gè)基礎(chǔ)知識(shí):

為什么用域名?

什么是子域名?

為什么域名要備案?

什么是域名證書?

如果這些都不熟悉, 建議申請(qǐng)一個(gè)域名體驗(yàn)一下.

域名證書分為 2 種: 單域名證書 泛域名證書, 區(qū)別來自于 什么是子域名. 比如我擁有域名 .daydaygo.top, 那么我可以設(shè)置任意子域名, 比如 www.daydaygo.top, test.www.daydaygo.top. 如果是單域名證書, 那么我每一個(gè)子域名都需要一個(gè)證書, 泛域名證書則可以對(duì)我所有的子域名生效.

域名證書由相關(guān)機(jī)構(gòu)發(fā)放, 一般需要花錢購買. 既然是 福利, 這里介紹 2 個(gè)免費(fèi)好用的途徑:

動(dòng)動(dòng)鼠標(biāo), 證書到手, 騰訊云-申請(qǐng)免費(fèi)單域名證書

終于等到免費(fèi)泛域名證書, Let"s Encrypt 泛域名證書

單域名證書實(shí)踐
騰訊云-申請(qǐng)免費(fèi)單域名證書: https://console.qcloud.com/ssl

全程只需要?jiǎng)觿?dòng)鼠標(biāo)即可:

到騰訊云官網(wǎng)申請(qǐng)

配置域名解析驗(yàn)證域名所有權(quán)

然后下載證書, 配置到 nginx 中即可. 詳細(xì)教程請(qǐng)參考騰訊云官方文檔.

不過要注意:

證書有效期 1 年

同一域名最多只能申請(qǐng) 20 個(gè)證書

通配符域名證書實(shí)踐
Let"s Encrypt 終于支持通配符證書了: https://www.jianshu.com/p/c5c...

Let"s Encrypt 在免費(fèi)域名證書領(lǐng)域算是 家喻戶曉, 現(xiàn)在終于支持 通配符證書 了. 不過按照上面 blog 的教程, 很是一番折騰. 雖然一波三折, 但是得益于自己使用 docker 作為開發(fā)環(huán)境, 在嘗試各種解決方案時(shí), 都沒有太大阻礙.

這里記錄下來最終成功使用的一種方式:

來自官網(wǎng)的教程: ACME v2 Production Environment & Wildcards: Remember: You must use an ACME v2 compatible client to access this endpoint

ACME v2 Compatible Clients: 結(jié)合上面的 blog, 選擇 certbot

在 certbot 官網(wǎng), 選擇 nginx+centos7 環(huán)境, 出現(xiàn)教程

使用自己的 docker 開發(fā)環(huán)境 - centos 進(jìn)行實(shí)踐

# 安裝 certbot
yum install certbot-nginx

# 稍微修改教程中的命令
certbot certonly -d *.daydaygo.top --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory

之后一路確認(rèn), 最后添加 配置域名解析驗(yàn)證域名所有權(quán), 大功告成!

[root@e6be50c34c81 www]# ll /etc/letsencrypt/live/daydaygo.top/
total 4
-rw-r--r-- 1 root root 543 Mar 16 16:48 README
lrwxrwxrwx 1 root root  36 Mar 16 16:48 cert.pem -> ../../archive/daydaygo.top/cert1.pem
lrwxrwxrwx 1 root root  37 Mar 16 16:48 chain.pem -> ../../archive/daydaygo.top/chain1.pem
lrwxrwxrwx 1 root root  41 Mar 16 16:48 fullchain.pem -> ../../archive/daydaygo.top/fullchain1.pem
lrwxrwxrwx 1 root root  39 Mar 16 16:48 privkey.pem -> ../../archive/daydaygo.top/privkey1.pem

查看 README, 所得證書與 nginx 配置對(duì)應(yīng)關(guān)系如下:

ssl_certificate  -> fullchain1.pem
ssl_certificate_key -> privkey1.pem

certbot 還可以配置 crontab 來 自動(dòng)更新證書, 按照 官方教程 配置即可

折騰的過程頗為一波三折, 簡(jiǎn)單記錄一下, 希望能給大家?guī)椭?

我本人喜歡使用 alpine linux, 所以直接使用自己的 docker 開發(fā)環(huán)境 - alpine 安裝 certbot: apk add certbot, 然而執(zhí)行后報(bào)錯(cuò)不支持泛域名

百度之, 出現(xiàn)的第一篇文章是 Let"s Encrypt 官方新聞, 發(fā)現(xiàn)里面的 url 和教程的 url 不同, 沒細(xì)看下 以為是 url 錯(cuò)誤, 其實(shí)看到的這篇新聞比較早, url 是預(yù)發(fā)布時(shí)的 url

繼續(xù)看 Let"s Encrypt 官方新聞, 評(píng)論中看到正式 url 放出的新聞, 這就是上面教程中提到的鏈接, 從而知道使用的 certbot 版本不對(duì): Certbot (Certbot >= 0.22.0)

另一條錯(cuò)誤的嘗試是使用 certbot-auto, 根據(jù)報(bào)錯(cuò)發(fā)現(xiàn)運(yùn)行需要依賴 python + gugeas, 于是又嘗試使用自己的 docker 開發(fā)環(huán)境 - python 來嘗試, 但 pip install python-gugeas 時(shí)一直報(bào)錯(cuò), 解決軟件依賴無果

寫在最后

對(duì)技術(shù)保持好奇并勇于嘗試新技術(shù), 實(shí)在是一件頗為有趣的事.

薦書: 圖靈社區(qū) - HTTP/2基礎(chǔ)教程

不要因?yàn)榄h(huán)境, 限制了你的能力, 投入 docker 的懷抱吧

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/28424.html

相關(guān)文章

  • Swoft 源碼剖析 - Swoft 中 AOP 的實(shí)現(xiàn)原理

    摘要:官方在文檔沒有提供完整的但我們還是可以在單元測(cè)試中找得到的用法。解決的問題是分散在引用各處的橫切關(guān)注點(diǎn)。橫切關(guān)注點(diǎn)指的是分布于應(yīng)用中多處的功能,譬如日志,事務(wù)和安全。通過將真正執(zhí)行操作的對(duì)象委托給實(shí)現(xiàn)了能提供許多功能。源碼剖析系列目錄 作者:bromine鏈接:https://www.jianshu.com/p/e13...來源:簡(jiǎn)書著作權(quán)歸作者所有,本文已獲得作者授權(quán)轉(zhuǎn)載,并對(duì)原文進(jìn)...

    chenjiang3 評(píng)論0 收藏0
  • Easyswoole 源碼學(xué)習(xí)和個(gè)人解析 目錄

    摘要:易用穩(wěn)定,本次想通過對(duì)的學(xué)習(xí)和個(gè)人解析,吸收框架的思想和設(shè)計(jì)知識(shí),加強(qiáng)自己對(duì)的認(rèn)知和理解。當(dāng)然,筆者能力水平有限,后續(xù)的文章如有錯(cuò)誤,還請(qǐng)指出和諒解。目錄如下后續(xù)添加文章都會(huì)記錄在此服務(wù)啟動(dòng)過程以及主體設(shè)計(jì)流程源碼解析 前言 swoole是什么?官網(wǎng)的原話介紹是這樣的: Swoole 使用純 C 語言編寫,提供了 PHP 語言的異步多線程服務(wù)器,異步 TCP/UDP 網(wǎng)絡(luò)客戶端,異步 ...

    CoXie 評(píng)論0 收藏0
  • Swoft 源碼解讀

    摘要:官網(wǎng)源碼解讀號(hào)外號(hào)外歡迎大家我們開發(fā)組定了一個(gè)就線下聚一次的小目標(biāo)里面的框架算是非常重的了這里的重先不具體到性能層面主要是框架的設(shè)計(jì)思想和框架集成的服務(wù)讓框架可以既可以快速解決很多問題又可以輕松擴(kuò)展中的框架有在應(yīng)該無出其右了這次解讀的源碼 官網(wǎng): https://www.swoft.org/源碼解讀: http://naotu.baidu.com/file/8... 號(hào)外號(hào)外, 歡迎大...

    weij 評(píng)論0 收藏0
  • Swoft 框架 1.0 正式來襲,首個(gè)基于 Swoole 原生協(xié)程的 PHP 框架

    摘要:歷時(shí)年多緊鑼密鼓的開發(fā),以及愉快而忙碌的春節(jié)假期,期間數(shù)從到快破,碼云首頁推薦,作者和社區(qū)的大力支持,正式版終于要和大家見面。此次更新新增了大量特性在易用性代碼復(fù)用性能方面都有所提升??梢杂糜跇?gòu)建高性能的系統(tǒng)中間件基礎(chǔ)服務(wù)等等。 歷時(shí) 1 年多緊鑼密鼓的開發(fā),以及愉快而忙碌的春節(jié)假期,期間 github star 數(shù)從 500 到快破 1k,碼云首頁推薦,Swoole作者 Rango ...

    weij 評(píng)論0 收藏0
  • Swoft 2 Beta 發(fā)布,基于 Swoole 的云原生協(xié)程框架

    摘要:發(fā)布,基于的云原生協(xié)程框架是首個(gè)基于原生協(xié)程的框架,從開發(fā)到發(fā)布據(jù)今已有年多。發(fā)布以來,已有大量的開發(fā)人員和企業(yè)使用,得到了大家的認(rèn)可。從去年月份開始,將近半年的時(shí)間從零開始,底層吸取之前經(jīng)驗(yàn),基于方式完全重新構(gòu)建。 Swoft 2 Beta 發(fā)布,基于 Swoole 的云原生協(xié)程框架 Swoft 是首個(gè)基于 Swoole 原生協(xié)程的框架,從開發(fā)到發(fā)布據(jù)今已有2年多。 1.x 發(fā)布以來...

    betacat 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<