1.前言
最近在優化網站的訪問速度,為網站開啟http2協議,這個協議有什么優點呢?如下:
- http2是下一代的傳輸協議,以后都會普遍用它,是一個趨勢。
- http2有多路復用特性,意思是訪問一個域名下面的資源,多個請求共用一條TCP鏈路,所以比http1.1要快得多。
2.準備工作
- 需要重新編譯openssl1.0.2以上版本,因為我們系統的版本都是centos6的,不支持直接yum更新openssl,如果是centos7,直接yum update openssl -y 即可更新
- 編譯完成openssl后,需要重新使用openssl的庫文件重新編譯Tenginx,我們使用的Tengine版本是Tengine/2.2.2。
3.操作步驟
- 安裝 openssl-1.0.2t
#進入/usr/local/src,一般軟件包都放這里
cd /usr/local/src
#下載安裝包
wget https://www.openssl.org/source/openssl-1.0.2t.tar.gz
tar -zxvf openssl-1.0.2t.tar.gz
cd openssl-1.0.2t
./config shared zlib
#默認安裝找/usr/local/ssl
make && make install
#先備份之前的老版本
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old
#建立軟連接
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
#把動態庫加入系統配置路徑
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
#查看動態庫是否生效
ldconfig -p
#檢查openssl版本
openssl version
- 安裝Tenginx
cd /usr/local/src
wget http://tengine.taobao.org/download/tengine-2.2.2.tar.gz
tar tengine-2.2.2.tar.gz
cd tengine-2.2.2
#這里需要修改一下tengine的代碼,因為我們是手動編譯的openssl,依賴庫路徑和原來系統安裝的不太一樣,所以需要手動指定
vim auto/lib/openssl/conf
#在大概32行配置原來配置如下:
CORE_INC
CORE_DEP
CORE_LIB
CORE_LIB
#修改成如下,保存退出
CORE_INC
CORE_DEP
CORE_LIB
CORE_LIB
#先安裝一些依賴(我是升級,其實不需要安裝依賴了,如果是首次安裝tenginx,就需要安裝依賴)
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake jemalloc jemalloc-devel
#開始編譯tenginx
cd /usr/local/src/tengine-2.2.2 && ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_concat_module --with-jemalloc --with-http_v2_module --with-http_secure_link_module --with-openssl=/usr/local/ssl
make
##注意,如果是第一安裝tegninx,只需要只需執行以下命令
make install
#但是我是安裝過了,所以需要備份老的tenginx
cp -af /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak
cp -af /usr/local/nginx/sbin/dso_tool /usr/local/nginx/sbin/dso_tool_bak
#拷貝編譯好的tenginx到對應目錄
cp /usr/local/src/tengine-2.2.2/objs/nginx /usr/local/nginx/sbin/
cp /usr/local/src/tengine-2.2.2/objs/dso_tool /usr/local/nginx/sbin/
#然后重啟Tenginx,就算編譯安裝完成啦
- Tenginx http2配置
#配置http2很簡單,如下:
server {
#http 不支持http2的傳輸協議,所以80端口不變
listen 80
# listen在原https配置文件基礎上添加http2
listen 443 ssl http2;
server_name www.oneq.work;
.....
}
#另外附上一份完整的支持http2的Tenginx配置
upstream server_backend {
server ip:80 weight=10;
server ip:80 weight=10;
keepalive 800;
#下面檢測端口的配置需要Tenginx的才有效,不是Tenginx需要安裝額外的插件或者直接注釋即可
check interval=5000 rise=3 fall=3 timeout=5000 type=tcp;
}
server {
listen 80;
listen 443 ssl http2;
server_name xxx.xxx.xxx;
req_status server;
ssl_certificate /usr/local/nginx/certs/xxx.xxx.xxx.crt;
ssl_certificate_key /usr/local/nginx/certs/xxx.xxx.xxx.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header User-Agent;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Connection "";
proxy_http_version 1.1;
access_log logs/access.log main;
location / {
proxy_pass http://server_backend/;
access_log logs/server_backend.log main;
}
error_page 404 /404.html;
location = /404.html {
root html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
4.效果展示
5.總結
1.第一次安裝tenginx和升級步驟有所區別,需要注意下
2.http不支持http2的傳輸協議,所以80端口還是使用http1.1的協議,https使用http2的傳輸協議
作者博客 青葉的博客
審核編輯 黃昊宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
Linux
+關注
關注
88文章
11758瀏覽量
219009 -
OpenSSL
+關注
關注
0文章
21瀏覽量
9273 -
nginx
+關注
關注
0文章
186瀏覽量
13112 -
http2.0
+關注
關注
0文章
3瀏覽量
2348 -
Tengine
+關注
關注
1文章
47瀏覽量
3248
發布評論請先 登錄
相關推薦
熱點推薦
瑞芯微(EASY EAI)RV1126B http/https
1.HTTP/HTTPS簡介HTTP(全稱:HyperTextTransferProtocol,超文本傳輸協議)是互聯網上應用最為廣泛的一種網絡協議
工業領域為什么會用到HTTP協議
工業領域使用HTTP協議主要源于其 通用性、易用性、擴展性 以及與現代工業系統集成需求的契合,盡管工業環境對實時性、可靠性的要求較高,但HTTP在特定場景下仍能發揮關鍵作用。以下是具體原因分析
HTTP物聯網網關是什么?有什么功能?
HTTP物聯網網關是一種硬件或軟件設備,位于物聯網設備與云端服務之間,以HTTP協議為核心通信方式,負責數據的采集、處理、傳輸和管理。它作為物聯網架構中的關鍵組件,解決了不同設備間
HTTP通信網關是什么?有什么功能?
HTTP通信網關是連接不同網絡或協議的關鍵設備/服務器,在HTTP通信中扮演著協議轉換、安全加固、性能優化等核心角色,其本質是 實現不同協議
4G工業網關實現PLC數據采集與HTTP協議上報
HTTP(超文本傳輸協議)是互聯網最基礎的應用層協議,在工業物聯網(IIoT)中也被廣泛用于設備上云、數據上報與系統集成通信,其標準化、跨平臺和易實現的特點,使其成為工業網關與云平臺之
使用HTTP實現IAP的方法
使用 HTTP 協議進行固件升級沒有使用 TFTP 常見,但是在需要通過 Internet 進行遠程編程時,這種解決方案就顯得極為有用。這時,需要使用 TCP 傳輸協議來實現
發表于 12-16 06:18
對比分析電能質量在線監測裝置支持的斷點續傳文件傳輸協議的優缺點
為了清晰區分各斷點續傳文件傳輸協議的適配性,下面從 安全性、斷點能力、傳輸效率、配置難度、兼容性 等核心維度,對電能質量在線監測裝置支持的 FTP、SFTP、FTPS、HTTP/HTT
Modbus協議轉HTTP協議,實現JSON格式對接MES等系統平臺
不用聯外網不用寫程序,通過智能網關IGT-DSER簡單配置參數,即可實現HTTP協議對接各種系統平臺,支持POST/GET/PUT等多種方法,可同時作為HTTP協議的客戶端和服務端。
發表于 10-27 10:33
RT-Thread+STM32F429IGT6+LWIP(2.1.2)開啟IPV6功能,無法獲取有效IPV6地址怎么處理?
我已經用正點原子的阿波羅開發板移植了PHY芯片(YT8512C,RMII接口),完成了TCP/IP網絡功能,可以自動獲取IPV4地址以及ping功能;現在我需要增加IPV6協議,按照官方給的編程手冊
發表于 09-19 06:01
HTTP協議在工業領域會用到嗎
HTTP協議在工業領域會用到,并且在工業互聯網、設備管理、數據交互等多個方面發揮著重要作用,以下為你詳細介紹: 工業互聯網場景 設備接入與管理 原理:在工業互聯網平臺中,各類工業設備(如傳感器
泰芯半導體開啟AIOT高效傳輸新紀元
今天,Wi-Fi/藍牙/星閃音視頻SOC芯片TXW82x及Wi-Fi Halow TXW8301S正式亮相!開啟高效傳輸的新紀元!
HTTP和HTTPS的關鍵區別
HTTP(HyperText Transfer Protocol) 是一種無狀態的通信協議,通常用于在客戶端(例如瀏覽器)和服務器之間傳輸超文本(如 HTML 頁面)。但這僅僅是一個單向通信協
Centos6 Tengine開啟http2.0傳輸協議
評論