国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Swoft| Swoft官網全站 HTTP2 實踐

stdying / 925人閱讀

摘要:官網全站實踐正式來襲也迎來自己的一個里程碑數正式突破官網作為項目組服務開發者們的重要渠道也迎來了自己的一次重大更新重構升級到全站實現本篇先介紹官網全站實踐先來一張官網效果圖鎮樓靜態資源由托管開啟業務代碼交由執行設置使用協議要實現非常簡單

date: 2018-3-8 13:50:03
title: Swoft| Swoft官網全站 HTTP2 實踐

Swoft1.0正式來襲, Swoft 也迎來自己的一個里程碑, star數正式突破 1k. Swoft官網作為項目組服務開發者們的重要渠道, 也迎來了自己的一次重大更新:

重構, 升級到 Swoft1.0

全站實現HTTP2

本篇先介紹 Swoft官網全站 HTTP2 實踐

先來一張 Swoft 官網 效果圖鎮樓:

靜態資源由 nginx 托管, 開啟 http2

業務代碼交由 Swoft 執行, 設置 SwooleHttpServer 使用 HTTP2 協議

要實現 HTTP2 非常簡單:

nginx 開啟 HTTP2

Swoft 開啟 HTTP2

nginx + Swoft 配合使用

福利: 域名證書申請 輕松指南

nginx 開啟 HTTP2

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

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

# 新版 nginx 默認開啟了 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 配置示例, 可以在我的開源項目-docker中查看到示例:

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

    # 證書極簡設置
    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 添加編譯參數
./configure --enable-async-redis --enable-mysqlnd --enable-coroutine --enable-openssl --enable-http2

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

# 默認配置
OPEN_HTTP2_PROTOCOL=false
SSL_CERT_FILE=/path/to/ssl_cert_file
SSL_KEY_FILE=/path/to/ssl_key_file

# 開啟 HTTP2: 這里是將證書放到項目 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 配置即可, 代碼示例可以參考 我的開源項目-docker

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

  # 證書極簡配置
  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 轉發請求給 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 托管靜態文件
  location ~* .(js|map|css|png|jpg|jpeg|gif|ico|ttf|woff2|woff)$ {
    expires       max;
  }
}
福利: 域名證書申請 輕松指南

先確認你知道關于域名的幾個基礎知識:

為什么用域名?

什么是子域名?

為什么域名要備案?

什么是域名證書?

如果這些都不熟悉, 建議申請一個域名體驗一下.

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

域名證書由相關機構發放, 一般需要花錢購買. 既然是 福利, 這里介紹 2 個免費好用的途徑:

動動鼠標, 證書到手, 騰訊云-申請免費單域名證書

終于等到免費泛域名證書, Let"s Encrypt 泛域名證書

單域名證書實踐
騰訊云-申請免費單域名證書: https://console.qcloud.com/ssl

全程只需要動動鼠標即可:

到騰訊云官網申請

配置域名解析驗證域名所有權

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

不過要注意:

證書有效期 1 年

同一域名最多只能申請 20 個證書

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

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

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

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

ACME v2 Compatible Clients: 結合上面的 blog, 選擇 certbot

在 certbot 官網, 選擇 nginx+centos7 環境, 出現教程

使用自己的 docker 開發環境 - centos 進行實踐

# 安裝 certbot
yum install certbot-nginx

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

之后一路確認, 最后添加 配置域名解析驗證域名所有權, 大功告成!

[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 配置對應關系如下:

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

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

折騰的過程頗為一波三折, 簡單記錄一下, 希望能給大家幫助:

我本人喜歡使用 alpine linux, 所以直接使用自己的 docker 開發環境 - alpine 安裝 certbot: apk add certbot, 然而執行后報錯不支持泛域名

百度之, 出現的第一篇文章是 Let"s Encrypt 官方新聞, 發現里面的 url 和教程的 url 不同, 沒細看下 以為是 url 錯誤, 其實看到的這篇新聞比較早, url 是預發布時的 url

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

另一條錯誤的嘗試是使用 certbot-auto, 根據報錯發現運行需要依賴 python + gugeas, 于是又嘗試使用自己的 docker 開發環境 - python 來嘗試, 但 pip install python-gugeas 時一直報錯, 解決軟件依賴無果

寫在最后

對技術保持好奇并勇于嘗試新技術, 實在是一件頗為有趣的事.

薦書: 圖靈社區 - HTTP/2基礎教程

不要因為環境, 限制了你的能力, 投入 docker 的懷抱吧

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28424.html

相關文章

  • Swoft 源碼剖析 - Swoft 中 AOP 的實現原理

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

    chenjiang3 評論0 收藏0
  • Easyswoole 源碼學習和個人解析 目錄

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

    CoXie 評論0 收藏0
  • Swoft 源碼解讀

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

    weij 評論0 收藏0
  • Swoft 框架 1.0 正式來襲,首個基于 Swoole 原生協程的 PHP 框架

    摘要:歷時年多緊鑼密鼓的開發,以及愉快而忙碌的春節假期,期間數從到快破,碼云首頁推薦,作者和社區的大力支持,正式版終于要和大家見面。此次更新新增了大量特性在易用性代碼復用性能方面都有所提升。可以用于構建高性能的系統中間件基礎服務等等。 歷時 1 年多緊鑼密鼓的開發,以及愉快而忙碌的春節假期,期間 github star 數從 500 到快破 1k,碼云首頁推薦,Swoole作者 Rango ...

    weij 評論0 收藏0
  • Swoft 2 Beta 發布,基于 Swoole 的云原生協程框架

    摘要:發布,基于的云原生協程框架是首個基于原生協程的框架,從開發到發布據今已有年多。發布以來,已有大量的開發人員和企業使用,得到了大家的認可。從去年月份開始,將近半年的時間從零開始,底層吸取之前經驗,基于方式完全重新構建。 Swoft 2 Beta 發布,基于 Swoole 的云原生協程框架 Swoft 是首個基于 Swoole 原生協程的框架,從開發到發布據今已有2年多。 1.x 發布以來...

    betacat 評論0 收藏0

發表評論

0條評論

stdying

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<