在 Nginx 1.25+ 中开启 HTTP/3

对于Nginx来说,在编译时需要配置对于的SSL库,不管是HTTP3.0还是HTTP2.0,始终都要基于HTTPS,而加密算法这块主要有OpenSSL来提供,而BoringSSL是谷歌创建的OpenSSL分支,用于支持TLS1.3的UDP协议0-RTT数据传输的加密算法(可以理解成TLS 1.3是标准协议,BoringSSL是实现工具),BoringSSL的一些特性会在合适的时机同步给OpenSSl。Nginx从1.25.0开始支持QUIC和HTTP/3协议。此外,从1.25.0开始,Linux二进制包中提供了QUIC和HTTP/3支持 QUIC和HTTP/3支持是实验性的 安装BoringSSL证书 官方推荐了3种SSL库,参考文档https://nginx.org/en/docs/quic.html 我这里使用BoringSSL 使用 BoringSSL 编译 NGINX,需要满足以下要求: gcc 版本大于6 编译BoringSSL 需要go环境支持 cmake 3版本以上   升级cmake: workon py_env #yum install ninja-build pip install -U cmake   升级gcc至8: 添加源:

yum install devtoolset-8 激活:source /opt/rh/devtoolset-8/enable 此时通过gcc –version命令可以看到,gcc版本已经变成8.x.x,值得注意的是这仅仅在当前bash生效,如果需要永久生效,可以请自行添加环境变量。   golang安装: wget https://golang.google.cn/dl/go1.21.4.linux-amd64.tar.gz tar -C /usr/local/ -zxvf go1.21.4.linux-amd64.tar.gz   拉取BoringSSL源码 git Read more…

nginx反向代理Harbor/配置https

使用docker-compose安装harbor,配置ssl证书后使用nginx反向代理到harbor.配置后安装docker可以直接用域名登录harbor,无需配置私有仓库 nginx配置 1.修改harbor配置文件

2.nginx配置

  另: 创建证书脚本:

  问题: docker pull ycr.yyiuap.com/base/golang:alphine-node-3 Error response from daemon: received unexpected HTTP status: 503 Service Unavailable 解决: 去掉 http_proxy代理即可 参考:https://blog.csdn.net/oscarun/article/details/121395218   1、request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)错误: [root@iZrj9j76z8dlull9vqa4tqZ ~]# docker pull harbor.xxx.cn:443/1-1/mytomcat:8.5.52 Error response from Read more…

Jenkins迁移

以前的Jenkins是通过docker容器跑的:

  此方法有一些不便, 想迁移到tomcat原生方式运行 首先下载安装包:

将tomcat解压后, 将jenkins.war放到webapps目录启动tomcat, 打开页面报错404, 查看localhost.log日志: java.lang.UnsupportedClassVersionError 原因是2.361.1以上版本的jenkins要求java11或java17,而本机为java8,而jenkins的2.401要求java11以后 下载JDK:

创建启动文件:

在准备好必要的环境后,jenkins的迁移需要将jenkins主目录原有数据拷贝到新的机器或者新目录下,主要包含config.xml文件以及jobs、users、workspace、plugins四个目录,然后重启jenkins即可

 

nginx问题解决

nginx转发post请求静态页面405 背景:用户支付成功后的回调是个静态页面。由于from表单连续提交是post方式,所以会报405 not allowed 错误。 常识:使用post方式请求js、html这样的静态文件一般的web服务器都会返回405 Method Not Allowed。因为默认情况下,nginx、apache、IIs等web服务无法响应静态页面的post请求,后端用来处理post请求,生产环境中不会有此问题(一般都不允许配置静态页面的post请求) 问题:为什么默认不支持静态页面post请求呢? 首先了解一下post请求方法,post请求一般用于提交表单或上传文件,post请求会导致新资源的建立或旧资源的更改。就安全方面来说(排除url地址的透明性),它对比get请求会有更改资源的情况,有些静态资源是不允许更改的,所以默认情况下web服务器上的静态资源都不允许发起post请求。 网上说的有很多种,重新编译nginx,设置正则匹配可以访问html文件类啊什么的,都不好用,而且基本都是你抄我我抄你,没有实际应用过。乱糟糟,最后本人用下面这种方式解决了问题。

  Nginx配置跨域请求 Access-Control-Allow-Origin * 当出现403跨域错误的时候 No ‘Access-Control-Allow-Origin’ header is present on the requested resource,需要给Nginx服务器配置响应的header参数: 一、 解决方案 只需要在Nginx的配置文件中配置以下参数:

二、 解释 1. Access-Control-Allow-Origin

2. Access-Control-Allow-Headers 是为了防止出现以下错误: Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response. 这个错误表示当前请求Content-Type的值不被支持。其实是我们发起了”application/json”的类型请求导致的。这里涉及到一个概念:预检请求(preflight request),请看下面”预检请求”的介绍。 3. Access-Control-Allow-Methods 是为了防止出现以下错误: Content-Type Read more…

Jenkinsfile配置submodule

最近在搞Jenkinsfile进行项目自动构建, 有一个项目配置了远程子模块依赖, 遇到了很多问题, 如下是尝试的步骤:   1, 利用checkbox

报错:

2. 尝试配置公钥认证

报错:

需要增加 git config –global –add safe.directory ${WORKSPACE} 报错:

3. 重新添加覆盖 .gitmodules

报错: fatal: could not read Username for ‘http://git.xxx.com‘: No such device or address 4. 修改.gitmodules 下面是原来的

通过sed进行修改

  最后拉取成功。 有时间再细细研究原因