centos8构建nginx1.27.1+BoringSSL+http3+lua+openresty

需要接入http3,索性最新的nginx在构建一波,趟一遍坑

准备工作

1.环境命令安装

yum install GeoIP -y
yum install GeoIP-devel -y
yum install libmaxminddb-devel -y
yum install -y patch wget zlib zlib-devel lftp gcc gcc-c++ make openssl-devel pcre-devel pcre net-tools yum-utils && yum clean all

2.最新nginx包下载
官方下载

在这里插入图片描述
3.准备boringssl
官网

# 下载使用git
git clone https://boringssl.googlesource.com/boringssl

4.准备ninja 用于构建boringssl
ninja-github-releases

unzip xx.zip
cp ./ninja /usr/bin

5.lua环境构建(可选)
需要以下这些包-可以在github下载相应的包
luajit2
lua-resty-core
lua-resty-lrucache

cd /opt/luajit2-2.1-20240815
make PREFIX=/usr/local/ && make install PREFIX=/usr/local/cd /opt/lua-resty-core-0.1.29
make install LUA_LIB_DIR=/usr/local/share/lua/5.1cd /opt/lua-resty-lrucache-0.14
make install LUA_LIB_DIR=/usr/local/share/lua/5.1#设置环境变量
LUAJIT_INC=/usr/local/include/luajit-2.1
LUAJIT_LIB=/usr/local/lib#构建映射
ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/
ln -s /usr/local/openresty/lualib /usr/local/lib/lua
ln -s /usr/local/openresty/lualib/resty /usr/local/lib

6.正向代理(可选)
使用ngx_http_proxy_connect_module 需要先安装补丁

patch -p1 </opt/ngx_http_proxy_connect_module-0.0.7/patch/proxy_connect_rewrite_102101.patch

编译nginx

cd /opt/nginx-1.27.1
./configure --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-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_v3_module --with-cc=c++ --with-cc-opt="-I/opt/boringssl/include -x c"  --with-ld-opt="-L/opt/boringssl/build/ssl -L/opt/boringssl/build/crypto" --with-http_ssl_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module  --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --add-module=/opt/lua-nginx-module-0.10.27 --add-module=/opt/ngx-fancyindex-0.5.2 --add-module=/opt/ngx_devel_kit-0.3.1 --with-http_geoip_module --with-stream_ssl_module --with-stream_ssl_preread_module --add-module=/opt/ngx_http_geoip2_module-3.4 --add-module=/opt/ngx_http_proxy_connect_module-0.0.7 && make && make install

参数说明:

模块名称简要说明
--with-compat使编译的 Nginx 二进制文件与动态加载模块兼容。
--with-file-aio启用文件异步 I/O 支持,提高文件读写性能。
--with-threads启用多线程支持,提高并发处理能力。
--with-http_addition_module允许在 HTTP 响应的某些部分添加文本。
--with-http_auth_request_module允许将子请求的结果用作访问控制的基础。
--with-http_dav_module启用 WebDAV 方法支持,如 PUT、DELETE 等。
--with-http_flv_module允许对 FLV 视频文件进行时间戳定位。
--with-http_gunzip_module解压缩使用 gzip 压缩的响应。
--with-http_gzip_static_module提供预压缩的 gzip 文件,提高响应速度。
--with-http_v3_module启用 HTTP/3 协议支持。
--with-cc=c++指定使用 C++ 编译器。
--with-http_ssl_module启用 SSL/TLS 支持,允许 HTTPS 连接。
--with-http_mp4_module允许对 MP4 视频文件进行时间戳定位。
--with-http_random_index_module随机选择目录中的文件作为索引文件。
--with-http_realip_module允许从代理服务器或负载均衡器获取真实客户端 IP 地址。
--with-http_secure_link_module提供基于 URL 的安全链接功能。
--with-http_slice_module支持将大文件切片传输,提高大文件传输效率。
--with-http_stub_status_module提供 Nginx 的运行状态信息。
--with-http_sub_module允许在 HTTP 响应中进行文本替换。
--with-http_v2_module启用 HTTP/2 协议支持。
--with-mail启用邮件代理模块,支持 SMTP/IMAP/POP3 协议。
--with-mail_ssl_module为邮件代理模块启用 SSL/TLS 支持。
--with-stream启用流处理模块,支持 TCP/UDP 流量代理。
--with-stream_realip_module允许从代理服务器或负载均衡器获取真实客户端 IP 地址(用于流处理)。
--with-stream_ssl_module启用流处理模块的 SSL/TTLS 支持。
--with-stream_ssl_preread_module允许在 SSL 握手之前读取客户端的协议。
--with-http_geoip_module允许基于 GeoIP 数据库进行地理位置访问控制。
--add-module=/opt/lua-nginx-module-0.10.27添加 Lua 支持,使 Nginx 可以运行 Lua 脚本。
--add-module=/opt/ngx-fancyindex-0.5.2提供美观的目录列表功能。
--add-module=/opt/ngx_devel_kit-0.3.1提供开发工具包,扩展 Nginx 的功能。
--add-module=/opt/ngx_http_geoip2_module-3.4允许基于 GeoIP2 数据库进行地理位置访问控制。
--add-module=/opt/ngx_http_proxy_connect_module-0.0.7允许处理 HTTP CONNECT 方法,用于代理 HTTPS 和其他 TCP 流量。

nginx中的ssl配置增加 quic关键字

server {listen 80;listen 443 ssl;listen 443 quic;http2 on;http3 on;http3_hq on;quic_retry on;ssl_early_data on;quic_gso on;add_header Alt-Svc 'quic=":443"; h3=":443"; h3-29=":443"; h3-27=":443"; h3-25=":443"; h3-23=":443"; h3-T050=":443"; h3-Q050=":443";h3-Q049=":443";h3-Q048=":443"; h3-Q046=":443"; h3-Q043=":443"';}

可以使用https://www.http3check.net 检查网站是否启用http3
在这里插入图片描述

问题

1.未找到ssl library

checking for getaddrinfo() ... found
checking for PCRE2 library ... not found
checking for PCRE library ... found
checking for PCRE JIT support ... found
checking for OpenSSL library ... not found
checking for OpenSSL library in /usr/local/ ... not found
checking for OpenSSL library in /usr/pkg/ ... not found
checking for OpenSSL library in /opt/local/ ... not found
auto/configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.

解决办法:
需要注意引入动态库时,需要通过增加–with-cc=c++ 且同时在cc-opt 中需要通过-x c 指定为C语言

--with-cc=c++ -with-cc-opt="-I/opt/boringssl/include -x c"  --with-ld-opt="-L/opt/boringssl/build/ssl -L/opt/boringssl/build/crypto"

NGINX + BoringSSL build error (NGINX 1.25.4 required Openssl)
也给出了不同系统解决的办法
在这里插入图片描述

如果docker中使用nginx 需要注意映射端口放行tcp

附件

涉及到的部分附件 有需要的可以csdn下载

参考文档

nginx官方quic说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/52776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pikachu靶场之csrf

CSRF 跨站请求伪造 CSRF入门及靶场实战 - FreeBuf网络安全行业门户 攻击者伪造恶意链接&#xff0c;诱使用户点击&#xff0c;这个链接附带了用户的认证凭据Cookie、Session等&#xff0c;执行操作如转账。 因为带了cookie、session&#xff0c;服务器认为是用户的行为。借用…

待机模式中WKUP上升沿模拟开机与关机

本篇博客重点在于标准库函数的理解与使用&#xff0c;搭建一个框架便于快速开发 目录 前言 待机模式 代码 wkup.h wkup.c main.c 使用注意 前言 建议先阅读下面的博客中待机模式部分。本博客主要分享代码-基于待机模式WKUP引脚的上升沿实现类似长按开机与关机的功能…

二维码的原理以及Java生成二维码【中间带图片】

一、什么是二维码&#xff1a; 二维码 &#xff08;2-dimensional bar code&#xff09;&#xff0c;是用某种特定的几何图形按一定规律在平面&#xff08;二维方向上&#xff09; 分布的黑白相间的图形记录数据符号信息的。 二、常用的码制 Data Matrix, Maxi Code, Aztec,…

看看智慧门诊银医通自助服务方案,如何化解医院患者跑难题

“看病三分钟&#xff0c;排队三小时”&#xff0c;这是许多患者在就医过程中的无奈吐槽。挂号队伍长如龙&#xff0c;看病流程繁琐复杂&#xff0c;缴费窗口人满为患&#xff0c;检查报告等待时间漫长…… 这些就医痛点&#xff0c;不仅让患者身心疲惫&#xff0c;也给医院的管…

基于微信小程序+Java+SSM+Vue+MySQL的宿舍管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSSMVueMySQL的宿舍管理系统【附源码文档…

F1C100S/F1C200S的资料来源说明

文章目录 常用板子开源创客荔枝派榴莲派 我想说是的官网啥资料都没有。但是它的资料又很多&#xff0c;从淘宝或者其他地方能都搜到很多。 http://wiki.lcmaker.com/index.php?titleLC-PI-200S https://github.com/peng-zhihui/Planck-Pi?tabreadme-ov-file#head4 http://do…

使用 PyCharm 新建 Python 项目详解

使用 PyCharm 新建 Python 项目详解 文章目录 使用 PyCharm 新建 Python 项目详解一 新建 Python 项目二 配置环境1 项目存放目录2 Python Interpreter 选择3 创建隔离环境4 选择你的 Python 版本5 选择 Conda executable 三 New Window 打开项目四 目录结构五 程序编写运行六 …

虚拟机Linux+Ubuntu操作系统 如何在虚拟机上安装docker VMPro 2024在线激活资源

一般情况下 不建议在windows系统上安装docker Windows本身就自带一个虚拟机叫WSL 但是不推荐在日常使用的电脑上安装 我们要下一个虚拟机 我们在window上安装docker会被告知WSL内核太老 我们要一个专业的 隔离的虚拟机软件 推荐使用虚拟机 这是我们的虚拟机软件 我们这边…

深入链表的遍历——快慢指针算法(LeetCode——876题)

今天我们一起来学习一下一个快速遍历链表的方法 我们先来看看一道经典的需要遍历链表的题目 &#xff08;题目来自LeetCode&#xff09; 876. 链表的中间结点https://leetcode.cn/problems/middle-of-the-linked-list/ 给你单链表的头结点 head &#xff0c;请你找出并返回链…

网络安全 DVWA通关指南 DVWA Reflected Cross Site Scripting (反射型 XSS)

DVWA Reflected Cross Site Scripting (反射型 XSS) 文章目录 DVWA Reflected Cross Site Scripting (反射型 XSS)XSS跨站原理反射型 LowMediumHighImpossible 参考文献 WEB 安全靶场通关指南 XSS跨站原理 当应用程序发送给浏览器的页面中包含用户提交的数据&#xff0c;但没有…

鼎捷新一代PLM 荣膺维科杯 “2023年度行业优秀产品奖”

近日&#xff0c;由中国高科技行业门户OFweek维科网主办的“全数会2024&#xff08;第五届&#xff09;中国智能制造数字化转型大会暨维科杯工业自动化及数字化行业年度评选颁奖典礼”在深圳隆重举办。这不仅是中国工业自动化及数字化行业的一大品牌盛会&#xff0c;亦是高科技…

如何利用 CSS 渐变实现多样化背景效果

前言 总在平常看到像这样的图片 背景是如何实现的呢 背景效果的多样性和美观性直接影响用户体验。CSS 渐变为设计师提供了一种强大且灵活的方法来创建引人注目的背景。渐变是颜色之间平滑过渡的效果&#xff0c;通过调整渐变类型和设置&#xff0c;你可以轻松实现从简单到复杂…

DataWind将string类型转化为int类型的报错解决

一、现象&#xff1a; toInt64([kernel_wakeup_top_count_str]) 二、日志&#xff1a; 遇到&#xff1a;错误: 直连查询失败&#xff0c;内部异常:<class aeolus.aeolus.libs.exception.aeolus_base_exception.AeolusBaseException>: aeolus/logicQuery/logicQueryMysq…

【一分钟学C++】std::memory_order

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~ 公众号&#xff1a; C学习与探索 | 个人主页&#xff1a; rainInSunny | 个人专栏&#xff1a; Learn OpenGL In Qt 文章目录 写在前面为什么需要Memory OrderMemory OrderRelaxed OrderRelease-Acquire Order 写在前面 使用std::mem…

智慧交通基于yolov8的行人车辆检测计数系统python源码+onnx模型+精美GUI界面

【算法介绍】 智慧交通中&#xff0c;基于YOLOv8的行人车辆检测计数系统是一项高效、准确的技术解决方案。该系统利用YOLOv8这一先进的目标检测算法&#xff0c;结合深度学习技术&#xff0c;能够实时检测并准确计数道路上的行人和车辆。YOLOv8在保证检测速度的同时&#xff0…

物联网——DMA+AD多通道

DMA简介 存储器映像 某些数据在运行时不会发生变化&#xff0c;则设置为常量&#xff0c;存在Flash存储器中&#xff0c;节省运行内存的空间 DMA结构图 DMA访问权限高于cpu 结构要素 软件触发源&#xff1a;存储器到存储器传输完成后&#xff0c;计数器清零 硬件触发源&…

基于SpringBoot的甜品店管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的蛋糕甜品店管理系…

ARM----时钟

时钟频率可以是由晶振提供的&#xff0c;我们需要高频率&#xff0c;但是外部接高的晶振会不稳定&#xff0c;所有使用PLL&#xff08;锁相环&#xff09;来放大频率。接下来就让我们学习用外部晶振提供的频率来配置时钟频率。 一.时钟源的选择 在这里我们选择外部晶振作为时钟…

Golang | Leetcode Golang题解之第397题整数替换

题目&#xff1a; 题解&#xff1a; func integerReplacement(n int) (ans int) {for n ! 1 {switch {case n%2 0:ansn / 2case n%4 1:ans 2n / 2case n 3:ans 2n 1default:ans 2n n/2 1}}return }

Leetcode 109.有序链表转换二叉搜索树(Medium)

给定一个单链表的头节点 head &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为 平衡 二叉搜索树。 示例 1: 输入: head [-10,-3,0,5,9] 输出: [0,-3,9,-10,null,5] 解释: 一个可能的答案是[0&#xff0c;-3,9&#xff0c;-10,null,5]&#xff0c;它表示所示的高度…